+QPushButton *DolphinNavigatorsWidgetAction::networkFolderButton(DolphinNavigatorsWidgetAction::Side side)
+{
+ int sideIndex = (side == Primary ? 0 : 1);
+ if (side == Primary) {
+ return static_cast<QPushButton *>(m_splitter->widget(sideIndex)->layout()->itemAt(3)->widget());
+ }
+ return static_cast<QPushButton *>(m_splitter->widget(sideIndex)->layout()->itemAt(2)->widget());
+}
+
+QPushButton *DolphinNavigatorsWidgetAction::newNetworkFolderButton(const DolphinUrlNavigator *urlNavigator, QWidget *parent) const
+{
+ auto networkFolderButton = new QPushButton(QIcon::fromTheme(QStringLiteral("folder-add")), i18nc("@action:button", "Add Network Folder"), parent);
+ networkFolderButton->setFlat(true);
+ 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);
+ job->setUiDelegate(delegate);
+ job->start();
+ });
+ networkFolderButton->hide();
+ 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;
+}
+