From b9fd609bb20d6246db8f63dd43bc237ce05de641 Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Wed, 25 Oct 2017 00:01:29 -0400 Subject: [PATCH] Resolve placeholders in entry details url --- src/core/Entry.cpp | 3 ++- src/gui/DetailsWidget.cpp | 11 +++++++++-- src/gui/DetailsWidget.ui | 9 ++++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/core/Entry.cpp b/src/core/Entry.cpp index d5afec046..edf5b6f24 100644 --- a/src/core/Entry.cpp +++ b/src/core/Entry.cpp @@ -243,7 +243,8 @@ QString Entry::url() const QString Entry::webUrl() const { - return resolveUrl(m_attributes->value(EntryAttributes::URLKey)); + QString url = resolveMultiplePlaceholders(m_attributes->value(EntryAttributes::URLKey)); + return resolveUrl(url); } QString Entry::username() const diff --git a/src/gui/DetailsWidget.cpp b/src/gui/DetailsWidget.cpp index 51448a970..deb7008ac 100644 --- a/src/gui/DetailsWidget.cpp +++ b/src/gui/DetailsWidget.cpp @@ -110,10 +110,17 @@ void DetailsWidget::getSelectedEntry(Entry* selectedEntry) } QString url = m_currentEntry->webUrl(); - if (url != "") { - url = QString("%2").arg(url).arg(shortUrl(url)); + if (!url.isEmpty()) { + // URL is well formed and can be opened in a browser + // create a new display url that masks password placeholders + // the actual link will use the password + QString displayUrl = m_currentEntry->url(); + displayUrl = m_currentEntry->maskPasswordPlaceholders(displayUrl); + displayUrl = m_currentEntry->resolveMultiplePlaceholders(displayUrl); + url = QString("%2").arg(url).arg(shortUrl(displayUrl)); m_ui->urlLabel->setOpenExternalLinks(true); } else { + // Fallback to the raw url string url = shortUrl(m_currentEntry->resolveMultiplePlaceholders(m_currentEntry->url())); m_ui->urlLabel->setOpenExternalLinks(false); } diff --git a/src/gui/DetailsWidget.ui b/src/gui/DetailsWidget.ui index 99164807e..fb31409f8 100644 --- a/src/gui/DetailsWidget.ui +++ b/src/gui/DetailsWidget.ui @@ -188,6 +188,9 @@ 0 + + PointingHandCursor + @@ -289,7 +292,11 @@ - + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + +