mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-02 14:45:04 +00:00
Avoid searching for the knetattach service on startup
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.
This commit is contained in:
parent
41bd0d27fa
commit
796332d63a
|
@ -253,8 +253,8 @@ QPushButton *DolphinNavigatorsWidgetAction::newNetworkFolderButton(const Dolphin
|
||||||
{
|
{
|
||||||
auto networkFolderButton = new QPushButton(QIcon::fromTheme(QStringLiteral("folder-add")), i18nc("@action:button", "Add Network Folder"), parent);
|
auto networkFolderButton = new QPushButton(QIcon::fromTheme(QStringLiteral("folder-add")), i18nc("@action:button", "Add Network Folder"), parent);
|
||||||
networkFolderButton->setFlat(true);
|
networkFolderButton->setFlat(true);
|
||||||
KService::Ptr service = KService::serviceByDesktopName(QStringLiteral("org.kde.knetattach"));
|
connect(networkFolderButton, &QPushButton::clicked, this, [networkFolderButton]() {
|
||||||
connect(networkFolderButton, &QPushButton::clicked, this, [networkFolderButton, service]() {
|
const KService::Ptr service = KService::serviceByDesktopName(QStringLiteral("org.kde.knetattach"));
|
||||||
auto *job = new KIO::ApplicationLauncherJob(service, networkFolderButton);
|
auto *job = new KIO::ApplicationLauncherJob(service, networkFolderButton);
|
||||||
auto *delegate = new KNotificationJobUiDelegate;
|
auto *delegate = new KNotificationJobUiDelegate;
|
||||||
delegate->setAutoErrorHandlingEnabled(true);
|
delegate->setAutoErrorHandlingEnabled(true);
|
||||||
|
@ -262,8 +262,14 @@ QPushButton *DolphinNavigatorsWidgetAction::newNetworkFolderButton(const Dolphin
|
||||||
job->start();
|
job->start();
|
||||||
});
|
});
|
||||||
networkFolderButton->hide();
|
networkFolderButton->hide();
|
||||||
connect(urlNavigator, &KUrlNavigator::urlChanged, this, [networkFolderButton, urlNavigator, service]() {
|
connect(urlNavigator, &KUrlNavigator::urlChanged, this, [networkFolderButton, urlNavigator]() {
|
||||||
networkFolderButton->setVisible(service && urlNavigator->locationUrl().scheme() == QLatin1String("remote"));
|
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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue