mirror of
https://invent.kde.org/system/dolphin
synced 2024-08-22 01:40:02 +00:00
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
This commit is contained in:
parent
5778099ece
commit
17e1a48c68
|
@ -50,6 +50,7 @@
|
|||
#include <QTimer>
|
||||
#include <QUrl>
|
||||
#include <QVBoxLayout>
|
||||
#include <QDesktopServices>
|
||||
|
||||
DolphinViewContainer::DolphinViewContainer(const QUrl& url, QWidget* parent) :
|
||||
QWidget(parent),
|
||||
|
@ -691,30 +692,18 @@ void DolphinViewContainer::slotUrlNavigatorLocationChanged(const QUrl& url)
|
|||
QTimer::singleShot(0, this, &DolphinViewContainer::requestFocus);
|
||||
}
|
||||
} else if (KProtocolManager::isSourceProtocol(url)) {
|
||||
QString app = QStringLiteral("konqueror");
|
||||
if (url.scheme().startsWith(QLatin1String("http"))) {
|
||||
showMessage(i18nc("@info:status", // krazy:exclude=qmethods
|
||||
"Dolphin does not support web pages, the web browser has been launched"),
|
||||
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 {
|
||||
showMessage(i18nc("@info:status",
|
||||
"Protocol not supported by Dolphin, Konqueror has been launched"),
|
||||
"Protocol not supported by Dolphin, default application has been launched"),
|
||||
Information);
|
||||
}
|
||||
|
||||
const QString secureUrl = KShell::quoteArg(url.toDisplayString(QUrl::PreferLocalFile));
|
||||
const QString command = app + ' ' + secureUrl;
|
||||
KRun::runCommand(command, app, app, this);
|
||||
QDesktopServices::openUrl(url);
|
||||
redirect(QUrl(), m_urlNavigator->locationUrl(1));
|
||||
} else {
|
||||
showMessage(i18nc("@info:status", "Invalid protocol"), Error);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue