/****************************************************************************** * Copyright (C) 2014 by Olivier Goffart #include #include #include #include #include #include #include #include #include #include "ownclouddolphinpluginhelper.h" class OwncloudDolphinPluginAction : public KAbstractFileItemActionPlugin { public: explicit OwncloudDolphinPluginAction(QObject* parent, const QList&) : KAbstractFileItemActionPlugin(parent) { } QList actions(const KFileItemListProperties& fileItemInfos, QWidget* parentWidget) Q_DECL_OVERRIDE { auto helper = OwncloudDolphinPluginHelper::instance(); QList urls = fileItemInfos.urlList(); if (urls.count() != 1 || !helper->isConnected()) return {}; auto url = urls.first(); if (!url.isLocalFile()) return {}; QDir localPath(url.toLocalFile()); auto localFile = localPath.canonicalPath(); const auto paths = helper->paths(); if (!std::any_of(paths.begin(), paths.end(), [&](const QString &s) { return localFile.startsWith(s); } )) return {}; auto menuaction = new QAction(parentWidget); menuaction->setText(helper->contextMenuTitle()); auto menu = new QMenu(parentWidget); menuaction->setMenu(menu); auto shareAction = menu->addAction(helper->shareActionTitle()); connect(shareAction, &QAction::triggered, this, [localFile, helper] { helper->sendCommand(QByteArray("SHARE:"+localFile.toUtf8()+"\n")); } ); if (!helper->copyPrivateLinkTitle().isEmpty()) { auto copyPrivateLinkAction = menu->addAction(helper->copyPrivateLinkTitle()); connect(copyPrivateLinkAction, &QAction::triggered, this, [localFile, helper] { helper->sendCommand(QByteArray("COPY_PRIVATE_LINK:" + localFile.toUtf8() + "\n")); }); } if (!helper->emailPrivateLinkTitle().isEmpty()) { auto emailPrivateLinkAction = menu->addAction(helper->emailPrivateLinkTitle()); connect(emailPrivateLinkAction, &QAction::triggered, this, [localFile, helper] { helper->sendCommand(QByteArray("EMAIL_PRIVATE_LINK:" + localFile.toUtf8() + "\n")); }); } return { menuaction }; } }; K_PLUGIN_FACTORY(OwncloudDolphinPluginActionFactory, registerPlugin();) #include "ownclouddolphinactionplugin.moc"