Wiring up config and forcing implementation of enable/disable per

provider
This commit is contained in:
Rob Emery 2024-10-06 01:06:30 +01:00 committed by Carl Schwan
parent 44e85d73df
commit 21b081ad14
No known key found for this signature in database
GPG key ID: 02325448204E452A
7 changed files with 80 additions and 2 deletions

View file

@ -42,6 +42,14 @@ public:
return 10;
}
void enable() override
{
}
void disable() override
{
}
public Q_SLOTS:
virtual void onNetworkChange() override;
virtual void onStart() override;

View file

@ -43,6 +43,13 @@ public:
return 20;
}
void enable() override
{
}
void disable() override
{
}
void sendUdpIdentityPacket(const QList<QHostAddress> &addresses);
static void configureSslSocket(QSslSocket *socket, const QString &deviceId, bool isDeviceTrusted);

View file

@ -24,6 +24,9 @@ public:
virtual QString name() = 0;
virtual int priority() = 0;
virtual void enable() = 0;
virtual void disable() = 0;
public Q_SLOTS:
virtual void onStart() = 0;
virtual void onStop() = 0;

View file

@ -27,6 +27,14 @@ public:
return 0;
}
void enable() override
{
}
void disable() override
{
}
void onStart() override;
void onStop() override;
void onNetworkChange() override;

View file

@ -149,11 +149,19 @@ QSet<LinkProvider *> Daemon::getLinkProviders() const
QStringList Daemon::linkProviders() const
{
auto configInstance = KdeConnectConfig::instance();
auto status = configInstance.getLinkProviderStatus();
QStringList returnValue;
for (LinkProvider *a : std::as_const(d->m_linkProviders)) {
QString line = QString(a->name());
line += QStringLiteral("|enabled");
if (status[QStringLiteral("enabled")].contains(a->name())) {
line += QStringLiteral("|enabled");
} else {
line += QStringLiteral("|disabled");
}
returnValue.append(line);
}
return returnValue;
@ -162,9 +170,34 @@ QStringList Daemon::linkProviders() const
void Daemon::setProviderStatus(const QStringList &providerStatus)
{
qCDebug(KDECONNECT_CORE) << "setProviderStatus called" << providerStatus;
KdeConnectConfig configInstance = KdeConnectConfig::instance();
QStringList enabledProviders;
QStringList disabledProviders;
for (const auto &i : providerStatus) {
qCDebug(KDECONNECT_CORE) << "setProviderstatus with: " << i;
auto components = i.split(QStringLiteral("|"));
QString providerName = components.at(0);
QString providerStatus = components.at(1);
auto linkProviders = this->getLinkProviders();
for (LinkProvider *provider : linkProviders) {
if (provider->name() == providerName) {
if (providerStatus == QStringLiteral("enabled")) {
qCDebug(KDECONNECT_CORE) << "enabling " << providerName;
provider->enable();
enabledProviders.append(providerName);
} else {
qCDebug(KDECONNECT_CORE) << "disabling" << providerName;
provider->disable();
disabledProviders.append(providerName);
}
break;
}
}
}
configInstance.setLinkProviderStatus(enabledProviders, disabledProviders);
}
QStringList Daemon::devices(bool onlyReachable, bool onlyTrusted) const

View file

@ -76,6 +76,23 @@ void KdeConnectConfig::setName(const QString &name)
d->m_config->sync();
}
void KdeConnectConfig::setLinkProviderStatus(const QStringList enabledProviders, const QStringList disabledProviders)
{
d->m_config->setValue(QStringLiteral("enabled_providers"), enabledProviders);
d->m_config->setValue(QStringLiteral("disabled_providers"), disabledProviders);
d->m_config->sync();
}
QMap<QString, QStringList> KdeConnectConfig::getLinkProviderStatus()
{
QMap<QString, QStringList> result;
result[QStringLiteral("enabled")] = d->m_config->value(QStringLiteral("enabled_providers")).toStringList();
result[QStringLiteral("disabled")] = d->m_config->value(QStringLiteral("disabled_providers")).toStringList();
return result;
}
DeviceType KdeConnectConfig::deviceType()
{
const QByteArrayList platforms = qgetenv("PLASMA_PLATFORM").split(':');

View file

@ -35,6 +35,8 @@ public:
QString certificatePath();
void setName(const QString &name);
void setLinkProviderStatus(const QStringList enabledProviders, const QStringList disabledProviders);
QMap<QString, QStringList> getLinkProviderStatus();
/*
* Trusted devices