File indexing completed on 2024-04-14 05:46:51

0001 /*
0002  * SPDX-FileCopyrightText: 2017 Elvis Angelaccio <elvis.angelaccio@kde.org>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  *
0006  */
0007 
0008 #include "decryptfileitemaction.h"
0009 
0010 #include <QAction>
0011 #include <QApplication>
0012 #include <QUrl>
0013 
0014 #include <KDialogJobUiDelegate>
0015 #include <KFileItemListProperties>
0016 #include <KIO/ApplicationLauncherJob>
0017 #include <KLocalizedString>
0018 #include <KPluginFactory>
0019 #include <KService>
0020 
0021 K_PLUGIN_FACTORY_WITH_JSON(DecryptFileItemActionFactory, "decryptfileitemaction.json", registerPlugin<DecryptFileItemAction>();)
0022 
0023 DecryptFileItemAction::DecryptFileItemAction(QObject *parent, const QVariantList&)
0024     : KAbstractFileItemActionPlugin {parent}
0025 {}
0026 
0027 QList<QAction*> DecryptFileItemAction::actions(const KFileItemListProperties &fileItemInfos, QWidget *parentWidget)
0028 {
0029     const auto icon = QIcon::fromTheme(QStringLiteral("document-decrypt"));
0030 
0031     auto decryptionAction = new QAction {icon, i18nc("@action:inmenu Decrypt action in Dolphin context menu", "Decrypt"), parentWidget};
0032     connect(decryptionAction, &QAction::triggered, this, [=]() {
0033         KService::Ptr service {new KService {QGuiApplication::applicationDisplayName(), QStringLiteral("symmy --decrypt %F"), QApplication::windowIcon().name()} };
0034         auto job = new KIO::ApplicationLauncherJob {service, parentWidget};
0035         job->setUrls(fileItemInfos.urlList());
0036         job->setUiDelegate(new KDialogJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, parentWidget));
0037         job->start();
0038     });
0039 
0040     if (!fileItemInfos.supportsWriting() || !fileItemInfos.isLocal()) {
0041         decryptionAction->setEnabled(false);
0042     }
0043 
0044     return {decryptionAction};
0045 }
0046 
0047 #include "decryptfileitemaction.moc"