diff --git a/src/core/Entry.cpp b/src/core/Entry.cpp index 26371774b..364407119 100644 --- a/src/core/Entry.cpp +++ b/src/core/Entry.cpp @@ -903,6 +903,10 @@ QString Entry::resolvePlaceholderRecursive(const QString& placeholder, int maxDe return url(); } return resolveMultiplePlaceholdersRecursive(url(), maxDepth - 1); + case PlaceholderType::DbDir: { + QFileInfo fileInfo(database()->filePath()); + return fileInfo.absoluteDir().absolutePath(); + } case PlaceholderType::UrlWithoutScheme: case PlaceholderType::UrlScheme: case PlaceholderType::UrlHost: @@ -1237,7 +1241,8 @@ Entry::PlaceholderType Entry::placeholderType(const QString& placeholder) const {QStringLiteral("{DT_UTC_DAY}"), PlaceholderType::DateTimeUtcDay}, {QStringLiteral("{DT_UTC_HOUR}"), PlaceholderType::DateTimeUtcHour}, {QStringLiteral("{DT_UTC_MINUTE}"), PlaceholderType::DateTimeUtcMinute}, - {QStringLiteral("{DT_UTC_SECOND}"), PlaceholderType::DateTimeUtcSecond}}; + {QStringLiteral("{DT_UTC_SECOND}"), PlaceholderType::DateTimeUtcSecond}, + {QStringLiteral("{DB_DIR}"), PlaceholderType::DbDir}}; return placeholders.value(placeholder.toUpper(), PlaceholderType::Unknown); } diff --git a/src/core/Entry.h b/src/core/Entry.h index 591372cdc..671f840e5 100644 --- a/src/core/Entry.h +++ b/src/core/Entry.h @@ -205,7 +205,8 @@ public: DateTimeUtcDay, DateTimeUtcHour, DateTimeUtcMinute, - DateTimeUtcSecond + DateTimeUtcSecond, + DbDir }; /** diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 980b8d32a..88aaf9565 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -1973,15 +1973,16 @@ void DatabaseWidget::processAutoOpen() } QFileInfo filepath; QFileInfo keyfile; + QString databaseUrl = entry->resolveMultiplePlaceholders(entry->url()); - if (entry->url().startsWith("file://")) { - QUrl url(entry->url()); + if (databaseUrl.startsWith("file://")) { + QUrl url(databaseUrl); filepath.setFile(url.toLocalFile()); } else { - filepath.setFile(entry->url()); + filepath.setFile(databaseUrl); if (filepath.isRelative()) { QFileInfo currentpath(m_db->filePath()); - filepath.setFile(currentpath.absoluteDir(), entry->url()); + filepath.setFile(currentpath.absoluteDir(), databaseUrl); } }