diff --git a/src/core/Config.cpp b/src/core/Config.cpp index 1b97a0956..187878d9f 100644 --- a/src/core/Config.cpp +++ b/src/core/Config.cpp @@ -148,7 +148,7 @@ void Config::init(const QString& fileName) m_defaults.insert("security/passwordscleartext", false); m_defaults.insert("security/hidepassworddetails", true); m_defaults.insert("security/autotypeask", true); - m_defaults.insert("security/IconDownloadFallbackToGoogle", false); + m_defaults.insert("security/IconDownloadFallback", false); m_defaults.insert("security/resettouchid", false); m_defaults.insert("security/resettouchidtimeout", 30); m_defaults.insert("security/resettouchidscreenlock", true); diff --git a/src/gui/EditWidgetIcons.cpp b/src/gui/EditWidgetIcons.cpp index 4538576d2..0555359d8 100644 --- a/src/gui/EditWidgetIcons.cpp +++ b/src/gui/EditWidgetIcons.cpp @@ -45,7 +45,7 @@ UrlFetchProgressDialog::UrlFetchProgressDialog(const QUrl &url, QWidget *parent) setWindowTitle(tr("Download Progress")); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); setLabelText(tr("Downloading %1.").arg(url.toDisplayString())); - setMinimumDuration(2000); + setMinimumDuration(0); setMinimumSize(QSize(400, 75)); } @@ -219,12 +219,12 @@ void EditWidgetIcons::downloadFavicon() } m_urlsToTry.append(QUrl(m_url.scheme() + "://" + secondLevelDomain + "/favicon.ico")); - // Try to use Google fallback, if enabled - if (config()->get("security/IconDownloadFallbackToGoogle", false).toBool()) { - QUrl urlGoogle = QUrl("https://www.google.com/s2/favicons"); + // Try to use alternative fallback URL, if enabled + if (config()->get("security/IconDownloadFallback", false).toBool()) { + QUrl fallbackUrl = QUrl("https://icons.duckduckgo.com"); + fallbackUrl.setPath("/ip3/" + QUrl::toPercentEncoding(fullyQualifiedDomain) + ".ico"); - urlGoogle.setQuery("domain=" + QUrl::toPercentEncoding(secondLevelDomain)); - m_urlsToTry.append(urlGoogle); + m_urlsToTry.append(fallbackUrl); } startFetchFavicon(m_urlsToTry.takeFirst()); @@ -242,8 +242,9 @@ void EditWidgetIcons::fetchFinished() { #ifdef WITH_XC_NETWORKING QImage image; - bool googleFallbackEnabled = config()->get("security/IconDownloadFallbackToGoogle", false).toBool(); + bool fallbackEnabled = config()->get("security/IconDownloadFallback", false).toBool(); bool error = (m_reply->error() != QNetworkReply::NoError); + QUrl url = m_reply->url(); QUrl redirectTarget = getRedirectTarget(m_reply); m_reply->deleteLater(); @@ -264,6 +265,9 @@ void EditWidgetIcons::fetchFinished() // No redirect, and we theoretically have some icon data now. image.loadFromData(m_bytesReceived); } + } else { + UrlFetchProgressDialog *progress = findChild(url.toString()); + progress->close(); } if (!image.isNull()) { @@ -275,9 +279,9 @@ void EditWidgetIcons::fetchFinished() startFetchFavicon(m_urlsToTry.takeFirst()); return; } else { - if (!googleFallbackEnabled) { + if (!fallbackEnabled) { emit messageEditEntry(tr("Unable to fetch favicon.") + "\n" + - tr("Hint: You can enable Google as a fallback under Tools>Settings>Security"), + tr("Hint: You can enable DuckDuckGo as a fallback under Tools>Settings>Security"), MessageWidget::Error); } else { emit messageEditEntry(tr("Unable to fetch favicon."), MessageWidget::Error); @@ -311,6 +315,7 @@ void EditWidgetIcons::startFetchFavicon(const QUrl& url) connect(m_reply, &QIODevice::readyRead, this, &EditWidgetIcons::fetchReadyRead); UrlFetchProgressDialog *progress = new UrlFetchProgressDialog(url, this); + progress->setObjectName(url.toString()); progress->setAttribute(Qt::WA_DeleteOnClose); connect(m_reply, &QNetworkReply::finished, progress, &QProgressDialog::hide); connect(m_reply, &QNetworkReply::downloadProgress, progress, &UrlFetchProgressDialog::networkReplyProgress); diff --git a/src/gui/SettingsWidget.cpp b/src/gui/SettingsWidget.cpp index c302b1ef2..8c84917b5 100644 --- a/src/gui/SettingsWidget.cpp +++ b/src/gui/SettingsWidget.cpp @@ -186,7 +186,7 @@ void SettingsWidget::loadSettings() m_secUi->lockDatabaseMinimizeCheckBox->setChecked(config()->get("security/lockdatabaseminimize").toBool()); m_secUi->lockDatabaseOnScreenLockCheckBox->setChecked(config()->get("security/lockdatabasescreenlock").toBool()); m_secUi->relockDatabaseAutoTypeCheckBox->setChecked(config()->get("security/relockautotype").toBool()); - m_secUi->fallbackToGoogle->setChecked(config()->get("security/IconDownloadFallbackToGoogle").toBool()); + m_secUi->fallbackToSearch->setChecked(config()->get("security/IconDownloadFallback").toBool()); m_secUi->passwordCleartextCheckBox->setChecked(config()->get("security/passwordscleartext").toBool()); m_secUi->passwordDetailsCleartextCheckBox->setChecked(config()->get("security/hidepassworddetails").toBool()); @@ -256,7 +256,7 @@ void SettingsWidget::saveSettings() config()->set("security/lockdatabaseminimize", m_secUi->lockDatabaseMinimizeCheckBox->isChecked()); config()->set("security/lockdatabasescreenlock", m_secUi->lockDatabaseOnScreenLockCheckBox->isChecked()); config()->set("security/relockautotype", m_secUi->relockDatabaseAutoTypeCheckBox->isChecked()); - config()->set("security/IconDownloadFallbackToGoogle", m_secUi->fallbackToGoogle->isChecked()); + config()->set("security/IconDownloadFallback", m_secUi->fallbackToSearch->isChecked()); config()->set("security/passwordscleartext", m_secUi->passwordCleartextCheckBox->isChecked()); config()->set("security/hidepassworddetails", m_secUi->passwordDetailsCleartextCheckBox->isChecked()); diff --git a/src/gui/SettingsWidgetSecurity.ui b/src/gui/SettingsWidgetSecurity.ui index db46b4016..f90fb4c3d 100644 --- a/src/gui/SettingsWidgetSecurity.ui +++ b/src/gui/SettingsWidgetSecurity.ui @@ -203,9 +203,9 @@ - + - Use Google as fallback for downloading website icons + Use DuckDuckGo as fallback for downloading website icons