Commit 17e1a48c authored by Méven Car's avatar Méven Car
Browse files

Use QDesktopServices to open urls not supported by dolphin

Summary:

This improves portability.
QDesktopServices uses standard mimetype base resolution to find the app to use.

BUG: 372642
FIXED-IN: 20.04

Test Plan:
 * Open http://google.com, opened default web browser
 * Open mms:// (on my test system opened vlc)

Reviewers: #dolphin, elvisangelaccio, ngraham

Reviewed By: #dolphin, elvisangelaccio, ngraham

Subscribers: nicolasfella, kfm-devel

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D26732
parent 5778099e
...@@ -50,6 +50,7 @@ ...@@ -50,6 +50,7 @@
#include <QTimer> #include <QTimer>
#include <QUrl> #include <QUrl>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QDesktopServices>
DolphinViewContainer::DolphinViewContainer(const QUrl& url, QWidget* parent) : DolphinViewContainer::DolphinViewContainer(const QUrl& url, QWidget* parent) :
QWidget(parent), QWidget(parent),
...@@ -691,30 +692,18 @@ void DolphinViewContainer::slotUrlNavigatorLocationChanged(const QUrl& url) ...@@ -691,30 +692,18 @@ void DolphinViewContainer::slotUrlNavigatorLocationChanged(const QUrl& url)
QTimer::singleShot(0, this, &DolphinViewContainer::requestFocus); QTimer::singleShot(0, this, &DolphinViewContainer::requestFocus);
} }
} else if (KProtocolManager::isSourceProtocol(url)) { } else if (KProtocolManager::isSourceProtocol(url)) {
QString app = QStringLiteral("konqueror");
if (url.scheme().startsWith(QLatin1String("http"))) { if (url.scheme().startsWith(QLatin1String("http"))) {
showMessage(i18nc("@info:status", // krazy:exclude=qmethods showMessage(i18nc("@info:status", // krazy:exclude=qmethods
"Dolphin does not support web pages, the web browser has been launched"), "Dolphin does not support web pages, the web browser has been launched"),
Information); Information);
const KConfigGroup config(KSharedConfig::openConfig(QStringLiteral("kdeglobals")), "General");
const QString browser = config.readEntry("BrowserApplication");
if (!browser.isEmpty()) {
app = browser;
if (app.startsWith('!')) {
// a literal command has been configured, remove the '!' prefix
app.remove(0, 1);
}
}
} else { } else {
showMessage(i18nc("@info:status", showMessage(i18nc("@info:status",
"Protocol not supported by Dolphin, Konqueror has been launched"), "Protocol not supported by Dolphin, default application has been launched"),
Information); Information);
} }
const QString secureUrl = KShell::quoteArg(url.toDisplayString(QUrl::PreferLocalFile)); QDesktopServices::openUrl(url);
const QString command = app + ' ' + secureUrl; redirect(QUrl(), m_urlNavigator->locationUrl(1));
KRun::runCommand(command, app, app, this);
} else { } else {
showMessage(i18nc("@info:status", "Invalid protocol"), Error); showMessage(i18nc("@info:status", "Invalid protocol"), Error);
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment