Use a faster way to determine kio-stash isn't installed

Summary:
Dolphin needs to figure out whether or not kio-stash is installed
to set the enabled state of a UI action.

When KProtocolInfo::isKnownProtocol can't find a protocol it gets
worried its protocol cache might be out of date, so it rebuilds it
(doing plenty of disk I/O) and looks again. kio-stash is currently
not yet installed on many systems, so this means most Dolphin
startups out there.

This patch switches to using QDBusConnectionInterface::isServiceRegistered
instead to determine whether the stash notifier daemon is running,
which should be faster than doing disk I/O.

Reviewers: davidedmundson, elvisangelaccio, shortstheory

Subscribers: emmanuelp, alexeymin, ngraham, #dolphin

Differential Revision: https://phabricator.kde.org/D9094
This commit is contained in:
Eike Hein 2020-12-28 17:57:44 +01:00 committed by Elvis Angelaccio
parent b14f98de19
commit b339ac1b5f

View file

@ -1523,7 +1523,7 @@ void DolphinMainWindow::setupActions()
stashSplit->setToolTip(i18nc("@info", "Opens the stash virtual directory in a split window"));
stashSplit->setIcon(QIcon::fromTheme(QStringLiteral("folder-stash")));
stashSplit->setCheckable(false);
stashSplit->setVisible(KProtocolInfo::isKnownProtocol("stash"));
stashSplit->setVisible(QDBusConnection::sessionBus().interface()->isServiceRegistered(QStringLiteral("org.kde.kio.StashNotifier")));
connect(stashSplit, &QAction::triggered, this, &DolphinMainWindow::toggleSplitStash);
KStandardAction::redisplay(this, &DolphinMainWindow::reloadView, actionCollection());