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>
This commit is contained in:
Crystalwarrior 2022-06-09 04:19:57 +03:00 committed by GitHub
parent 06db93bd0d
commit b8a5deeaae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 4 deletions

View File

@ -971,12 +971,18 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app)
ui_mount_add->setSizePolicy(stretch_btns); ui_mount_add->setSizePolicy(stretch_btns);
ui_mount_buttons_layout->addWidget(ui_mount_add, 0, 0, 1, 1); ui_mount_buttons_layout->addWidget(ui_mount_add, 0, 0, 1, 1);
connect(ui_mount_add, &QPushButton::clicked, this, [this] { 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(), QApplication::applicationDirPath(),
QFileDialog::ShowDirsOnly); QFileDialog::ShowDirsOnly);
if (dir.isEmpty()) if (path.isEmpty()) {
return; 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->addItem(dir_item);
ui_mount_list->setCurrentItem(dir_item); ui_mount_list->setCurrentItem(dir_item);

View File

@ -397,7 +397,7 @@ void Courtroom::on_evidence_image_name_edited()
void Courtroom::on_evidence_image_button_clicked() 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); QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::ExistingFile); dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilter(tr("Images (*.png)")); dialog.setNameFilter(tr("Images (*.png)"));
@ -413,6 +413,15 @@ void Courtroom::on_evidence_image_button_clicked()
return; return;
QString filename = filenames.at(0); 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); filename = dir.relativeFilePath(filename);
ui_evidence_image_name->setText(filename); ui_evidence_image_name->setText(filename);
on_evidence_image_name_edited(); on_evidence_image_name_edited();