The installed services might change while Dolphin is running, so it is
better to only search when they are actually needed instead.
The very first time such a search happens (e.g. after updating the
system), is also somewhat slow, which could slow down the very first
Dolphin startup.
This commit might also produce a very slight general startup speed
improvement. However, the measured change is within the margin of
error.
{
auto networkFolderButton = new QPushButton(QIcon::fromTheme(QStringLiteral("folder-add")), i18nc("@action:button", "Add Network Folder"), parent);
networkFolderButton->setFlat(true);
{
auto networkFolderButton = new QPushButton(QIcon::fromTheme(QStringLiteral("folder-add")), i18nc("@action:button", "Add Network Folder"), parent);
networkFolderButton->setFlat(true);
- KService::Ptr service = KService::serviceByDesktopName(QStringLiteral("org.kde.knetattach"));
- connect(networkFolderButton, &QPushButton::clicked, this, [networkFolderButton, service]() {
+ connect(networkFolderButton, &QPushButton::clicked, this, [networkFolderButton]() {
+ const KService::Ptr service = KService::serviceByDesktopName(QStringLiteral("org.kde.knetattach"));
auto *job = new KIO::ApplicationLauncherJob(service, networkFolderButton);
auto *delegate = new KNotificationJobUiDelegate;
delegate->setAutoErrorHandlingEnabled(true);
auto *job = new KIO::ApplicationLauncherJob(service, networkFolderButton);
auto *delegate = new KNotificationJobUiDelegate;
delegate->setAutoErrorHandlingEnabled(true);
job->start();
});
networkFolderButton->hide();
job->start();
});
networkFolderButton->hide();
- connect(urlNavigator, &KUrlNavigator::urlChanged, this, [networkFolderButton, urlNavigator, service]() {
- networkFolderButton->setVisible(service && urlNavigator->locationUrl().scheme() == QLatin1String("remote"));
+ connect(urlNavigator, &KUrlNavigator::urlChanged, this, [networkFolderButton, urlNavigator]() {
+ if (urlNavigator->locationUrl().scheme() == QLatin1String("remote")) {
+ // Looking up a service can be a bit slow, so we only do it now when it becomes necessary.
+ const KService::Ptr service = KService::serviceByDesktopName(QStringLiteral("org.kde.knetattach"));
+ networkFolderButton->setVisible(service);
+ } else {
+ networkFolderButton->setVisible(false);
+ }
});
return networkFolderButton;
}
});
return networkFolderButton;
}