1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
/*
SPDX-FileCopyrightText: 2016 Elvis Angelaccio <elvis.angelaccio@kde.org>
SPDX-License-Identifier: BSD-2-Clause
*/
#include "plugin.h"
#include <QJsonArray>
#include <QStandardPaths>
namespace Kerfuffle
{
Plugin::Plugin(QObject *parent, const KPluginMetaData &metaData)
: QObject(parent)
, m_enabled(true)
, m_metaData(metaData)
{
}
int Plugin::priority() const
{
const int priority = m_metaData.rawData().value(QStringLiteral("X-KDE-Priority")).toInt();
return (priority > 0 ? priority : 0);
}
bool Plugin::isEnabled() const
{
return m_enabled;
}
void Plugin::setEnabled(bool enabled)
{
m_enabled = enabled;
Q_EMIT enabledChanged();
}
bool Plugin::isReadWrite() const
{
const bool isDeclaredReadWrite = m_metaData.rawData().value(QStringLiteral("X-KDE-Kerfuffle-ReadWrite")).toBool();
return isDeclaredReadWrite && findExecutables(readWriteExecutables());
}
QStringList Plugin::readOnlyExecutables() const
{
QStringList readOnlyExecutables;
const QJsonArray array = m_metaData.rawData().value(QStringLiteral("X-KDE-Kerfuffle-ReadOnlyExecutables")).toArray();
for (const QJsonValue &value : array) {
readOnlyExecutables << value.toString();
}
return readOnlyExecutables;
}
QStringList Plugin::readWriteExecutables() const
{
QStringList readWriteExecutables;
const QJsonArray array = m_metaData.rawData().value(QStringLiteral("X-KDE-Kerfuffle-ReadWriteExecutables")).toArray();
for (const QJsonValue &value : array) {
readWriteExecutables << value.toString();
}
return readWriteExecutables;
}
KPluginMetaData Plugin::metaData() const
{
return m_metaData;
}
bool Plugin::hasRequiredExecutables() const
{
return findExecutables(readOnlyExecutables());
}
bool Plugin::isValid() const
{
return isEnabled() && m_metaData.isValid() && hasRequiredExecutables();
}
bool Plugin::findExecutables(const QStringList &executables)
{
for (const QString &executable : executables) {
if (executable.isEmpty()) {
continue;
}
if (QStandardPaths::findExecutable(executable).isEmpty()) {
return false;
}
}
return true;
}
}
#include "moc_plugin.cpp"
|