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"