diff --git a/src/plugins/ShareUrlPluginType.json b/src/plugins/ShareUrlPluginType.json --- a/src/plugins/ShareUrlPluginType.json +++ b/src/plugins/ShareUrlPluginType.json @@ -26,7 +26,8 @@ "Name[zh_TW]": "分享…" }, "X-Purpose-InboundArguments": [ - "urls" + "urls", + "title" ], "X-Purpose-OutboundArguments": [] } diff --git a/src/plugins/email/emailplugin.cpp b/src/plugins/email/emailplugin.cpp --- a/src/plugins/email/emailplugin.cpp +++ b/src/plugins/email/emailplugin.cpp @@ -84,7 +84,13 @@ QUrlQuery query; for (const auto &att : urls) { - query.addQueryItem(QStringLiteral("attachment"), att.toString()); + QUrl url(att.toString()); + if (url.isLocalFile()) { + query.addQueryItem(QStringLiteral("attachment"), att.toString()); + } else { + query.addQueryItem(QStringLiteral("body"), att.toString()); + query.addQueryItem(QStringLiteral("subject"), data().value(QStringLiteral("title")).toString()); + } } QUrl url; url.setScheme(QStringLiteral("mailto")); @@ -108,11 +114,20 @@ const auto urls = data().value(QStringLiteral("urls")).toArray(); QStringList attachments; + QStringList args = QStringList{ QStringLiteral("-compose")}; + QString message; for (const auto &att : urls) { - attachments.push_back(att.toString()); + QUrl url(att.toString()); + if (url.isLocalFile()) { + attachments.push_back(att.toString()); + } else { + message += QStringLiteral("body='%1',subject='%2',").arg(url.toString()).arg(data().value(QStringLiteral("title")).toString()); + } } - const auto args = QStringList{ QStringLiteral("-compose"), - QStringLiteral("attachment='%1'").arg(attachments.join(QStringLiteral(","))) }; + + message +=(QStringLiteral("attachment='%1'").arg(attachments.join(QStringLiteral(",")))); + args.append(message); + if (!QProcess::startDetached(tb, args)) { setError(KJob::UserDefinedError); setErrorText(i18n("Failed to launch email client")); diff --git a/src/plugins/email/emailplugin.json b/src/plugins/email/emailplugin.json --- a/src/plugins/email/emailplugin.json +++ b/src/plugins/email/emailplugin.json @@ -101,6 +101,7 @@ "X-Purpose-Configuration": [], "X-Purpose-Constraints": [], "X-Purpose-PluginTypes": [ - "Export" + "Export", + "ShareUrl" ] }