File indexing completed on 2024-05-05 05:50:42
0001 /* 0002 SPDX-FileCopyrightText: 2016 Elvis Angelaccio <elvis.angelaccio@kde.org> 0003 0004 SPDX-License-Identifier: BSD-2-Clause 0005 */ 0006 0007 #include "plugin.h" 0008 #include "ark_debug.h" 0009 0010 #include <QJsonArray> 0011 #include <QStandardPaths> 0012 0013 namespace Kerfuffle 0014 { 0015 Plugin::Plugin(QObject *parent, const KPluginMetaData &metaData) 0016 : QObject(parent) 0017 , m_enabled(true) 0018 , m_metaData(metaData) 0019 { 0020 } 0021 0022 int Plugin::priority() const 0023 { 0024 const int priority = m_metaData.rawData()[QStringLiteral("X-KDE-Priority")].toInt(); 0025 return (priority > 0 ? priority : 0); 0026 } 0027 0028 bool Plugin::isEnabled() const 0029 { 0030 return m_enabled; 0031 } 0032 0033 void Plugin::setEnabled(bool enabled) 0034 { 0035 m_enabled = enabled; 0036 Q_EMIT enabledChanged(); 0037 } 0038 0039 bool Plugin::isReadWrite() const 0040 { 0041 const bool isDeclaredReadWrite = m_metaData.rawData()[QStringLiteral("X-KDE-Kerfuffle-ReadWrite")].toBool(); 0042 return isDeclaredReadWrite && findExecutables(readWriteExecutables()); 0043 } 0044 0045 QStringList Plugin::readOnlyExecutables() const 0046 { 0047 QStringList readOnlyExecutables; 0048 0049 const QJsonArray array = m_metaData.rawData()[QStringLiteral("X-KDE-Kerfuffle-ReadOnlyExecutables")].toArray(); 0050 for (const QJsonValue &value : array) { 0051 readOnlyExecutables << value.toString(); 0052 } 0053 0054 return readOnlyExecutables; 0055 } 0056 0057 QStringList Plugin::readWriteExecutables() const 0058 { 0059 QStringList readWriteExecutables; 0060 0061 const QJsonArray array = m_metaData.rawData()[QStringLiteral("X-KDE-Kerfuffle-ReadWriteExecutables")].toArray(); 0062 for (const QJsonValue &value : array) { 0063 readWriteExecutables << value.toString(); 0064 } 0065 0066 return readWriteExecutables; 0067 } 0068 0069 KPluginMetaData Plugin::metaData() const 0070 { 0071 return m_metaData; 0072 } 0073 0074 bool Plugin::hasRequiredExecutables() const 0075 { 0076 return findExecutables(readOnlyExecutables()); 0077 } 0078 0079 bool Plugin::isValid() const 0080 { 0081 return isEnabled() && m_metaData.isValid() && hasRequiredExecutables(); 0082 } 0083 0084 bool Plugin::findExecutables(const QStringList &executables) 0085 { 0086 for (const QString &executable : executables) { 0087 if (executable.isEmpty()) { 0088 continue; 0089 } 0090 0091 if (QStandardPaths::findExecutable(executable).isEmpty()) { 0092 return false; 0093 } 0094 } 0095 0096 return true; 0097 } 0098 0099 } 0100 0101 #include "moc_plugin.cpp"