diff options
| author | Crystalwarrior <Varsash@Gmail.com> | 2022-06-09 04:19:57 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-08 20:19:57 -0500 |
| commit | b8a5deeaaeb17e639cb89a66fac1b5990b3480d3 (patch) | |
| tree | 8f357ef02fb39e4a0378611983ae2e9c83f9b6d2 | |
| parent | 06db93bd0d2a896a8f7fbadbc814d9e52570d1aa (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.cpp | 12 | ||||
| -rw-r--r-- | src/evidence.cpp | 11 |
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(); |
