aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCrystalwarrior <Varsash@Gmail.com>2022-06-09 04:19:57 +0300
committerGitHub <noreply@github.com>2022-06-08 20:19:57 -0500
commitb8a5deeaaeb17e639cb89a66fac1b5990b3480d3 (patch)
tree8f357ef02fb39e4a0378611983ae2e9c83f9b6d2
parent06db93bd0d2a896a8f7fbadbc814d9e52570d1aa (diff)
Fix relative paths for evidence image and mounted base folders (#757)
* Fix adding mounted folders not using relative path if the chosen folder is inside the application folder Fix evidence relative pathing not being aware of mounted base folders, and fix default evidence folder being in base/evidence rather than first found "evidence" folder * more braces Co-authored-by: stonedDiscord <Tukz@gmx.de>
-rw-r--r--src/aooptionsdialog.cpp12
-rw-r--r--src/evidence.cpp11
2 files changed, 19 insertions, 4 deletions
diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp
index e2ae7506..373473c1 100644
--- a/src/aooptionsdialog.cpp
+++ b/src/aooptionsdialog.cpp
@@ -971,12 +971,18 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app)
ui_mount_add->setSizePolicy(stretch_btns);
ui_mount_buttons_layout->addWidget(ui_mount_add, 0, 0, 1, 1);
connect(ui_mount_add, &QPushButton::clicked, this, [this] {
- QString dir = QFileDialog::getExistingDirectory(this, tr("Select a base folder"),
+ QString path = QFileDialog::getExistingDirectory(this, tr("Select a base folder"),
QApplication::applicationDirPath(),
QFileDialog::ShowDirsOnly);
- if (dir.isEmpty())
+ if (path.isEmpty()) {
return;
- QListWidgetItem *dir_item = new QListWidgetItem(dir);
+ }
+ QDir dir(QApplication::applicationDirPath());
+ QString relative = dir.relativeFilePath(path);
+ if (!relative.contains("../")) {
+ path = relative;
+ }
+ QListWidgetItem *dir_item = new QListWidgetItem(path);
ui_mount_list->addItem(dir_item);
ui_mount_list->setCurrentItem(dir_item);
diff --git a/src/evidence.cpp b/src/evidence.cpp
index 76d16aff..3b38b414 100644
--- a/src/evidence.cpp
+++ b/src/evidence.cpp
@@ -397,7 +397,7 @@ void Courtroom::on_evidence_image_name_edited()
void Courtroom::on_evidence_image_button_clicked()
{
- QDir dir(ao_app->get_base_path() + "evidence");
+ QDir dir(ao_app->get_real_path(ao_app->get_evidence_path("")));
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilter(tr("Images (*.png)"));
@@ -413,6 +413,15 @@ void Courtroom::on_evidence_image_button_clicked()
return;
QString filename = filenames.at(0);
+ QStringList bases = ao_app->get_mount_paths();
+ bases.prepend(ao_app->get_base_path());
+ for (const QString &base : bases) {
+ QDir baseDir(base);
+ if (filename.startsWith(baseDir.absolutePath())) {
+ dir.setPath(baseDir.absolutePath() + "/evidence");
+ break;
+ }
+ }
filename = dir.relativeFilePath(filename);
ui_evidence_image_name->setText(filename);
on_evidence_image_name_edited();