Image management checks

Guido Lerch guido.lerch at gmail.com
Mon Oct 12 16:15:43 PDT 2015


Adding some check's

-- 
Best regards,
Guido
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20151013/0e51c063/attachment.html>
-------------- next part --------------
From 3ee7ed771af499328c2414cabf342caa20345a5b Mon Sep 17 00:00:00 2001
From: Guido Lerch <guido.lerch at gmail.com>
Date: Tue, 13 Oct 2015 00:59:05 +0200
Subject: [PATCH 3/4] Adding image management checks

Some checks and balances, making sure we have a location in the preferences.

Signed-off-by: Guido Lerch <guido.lerch at gmail.com>
---
 dive.c                |  2 +-
 qt-ui/preferences.cpp | 16 +++++++++++-----
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/dive.c b/dive.c
index a9532ad..d9c8a5a 100644
--- a/dive.c
+++ b/dive.c
@@ -3298,7 +3298,7 @@ bool picture_check_valid(char *filename, int shift_time)
 void dive_create_picture(struct dive *dive, char *filename, int shift_time, bool match_all)
 {
 	char *new_filename;
-	if (prefs.manage_images) {
+	if (prefs.manage_images && strcmp(prefs.image_location,"")) {
 		copy_image_and_overwrite(filename, prefs.image_location, get_file_name(filename));
 		new_filename = strdup(strcat(prefs.image_location,get_file_name(filename)));
 	} else {
diff --git a/qt-ui/preferences.cpp b/qt-ui/preferences.cpp
index c47f364..6cc9bcb 100644
--- a/qt-ui/preferences.cpp
+++ b/qt-ui/preferences.cpp
@@ -254,6 +254,11 @@ void PreferencesDialog::setUiFromPrefs()
 	// Images
 	ui.manage_images->setChecked(prefs.manage_images);
 	ui.image_location->setText(prefs.image_location);
+	QString il(prefs.image_location);
+	if (!il.isEmpty())
+		ui.manage_images->setEnabled(true);
+	else
+		ui.manage_images->setEnabled(false);
 }
 
 void PreferencesDialog::restorePrefs()
@@ -437,7 +442,6 @@ void PreferencesDialog::syncSettings()
 	s.beginGroup("images");
 	s.setValue("manage", ui.manage_images->isChecked());
 	s.setValue("location", ui.image_location->text());
-
 	s.endGroup();
 
 	loadSettings();
@@ -572,9 +576,11 @@ void PreferencesDialog::on_chooseImageLocation_clicked()
 {
 	QString oldDirectory = ui.image_location->text();
 	QString choosenDirectory = QFileDialog::getExistingDirectory(this, tr("Open Image location"), oldDirectory, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
-	if (!choosenDirectory.isEmpty())
+	if (!choosenDirectory.isEmpty()) {
 		ui.image_location->setText(choosenDirectory + "/");
-	QDir di(ui.image_location->text());
-	if (!di.exists())
-		di.mkpath(ui.image_location->text());
+		QDir di(ui.image_location->text());
+		if (!di.exists())
+			di.mkpath(ui.image_location->text());
+		ui.manage_images->setEnabled(true);
+	}
 }
-- 
2.3.8 (Apple Git-58)

-------------- next part --------------
From 62cf4e9590991bbfec660f62e9df36edb57c989e Mon Sep 17 00:00:00 2001
From: Guido Lerch <guido.lerch at gmail.com>
Date: Tue, 13 Oct 2015 01:13:28 +0200
Subject: [PATCH 4/4] Adding image management checks 2

More checking if the selected location is available and existing
before trying to copy the file.

Signed-off-by: Guido Lerch <guido.lerch at gmail.com>
---
 dive.c       | 2 +-
 qthelper.cpp | 6 ++++++
 qthelper.h   | 1 +
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/dive.c b/dive.c
index d9c8a5a..4e6ef76 100644
--- a/dive.c
+++ b/dive.c
@@ -3298,7 +3298,7 @@ bool picture_check_valid(char *filename, int shift_time)
 void dive_create_picture(struct dive *dive, char *filename, int shift_time, bool match_all)
 {
 	char *new_filename;
-	if (prefs.manage_images && strcmp(prefs.image_location,"")) {
+	if (prefs.manage_images && strcmp(prefs.image_location,"") && dir_exists(prefs.image_location)) {
 		copy_image_and_overwrite(filename, prefs.image_location, get_file_name(filename));
 		new_filename = strdup(strcat(prefs.image_location,get_file_name(filename)));
 	} else {
diff --git a/qthelper.cpp b/qthelper.cpp
index da85ffe..3480e8c 100644
--- a/qthelper.cpp
+++ b/qthelper.cpp
@@ -1597,3 +1597,9 @@ extern "C" bool in_planner()
 {
 	return (currentApplicationState == "PlanDive" || currentApplicationState == "EditPlannedDive");
 }
+
+extern "C" bool dir_exists(char *dir)
+{
+	QDir d(dir);
+	return d.exists();
+}
diff --git a/qthelper.h b/qthelper.h
index f5457b1..05c6973 100644
--- a/qthelper.h
+++ b/qthelper.h
@@ -130,5 +130,6 @@ bool parseGpsText(const QString &gps_text, double *latitude, double *longitude);
 QByteArray getCurrentAppState();
 void setCurrentAppState(QByteArray state);
 extern "C" bool in_planner();
+extern "C" bool dir_exists(char *dir);
 
 #endif // QTHELPER_H
-- 
2.3.8 (Apple Git-58)



More information about the subsurface mailing list