Merge PR #379: Snapd: Remove the snap plugin

This commit is contained in:
Jenkins nymea 2021-02-26 10:27:56 +01:00
commit 1157cc8d59
25 changed files with 0 additions and 4025 deletions

17
debian/control vendored
View File

@ -950,22 +950,6 @@ Description: nymea.io plugin for Sonos smart speakers
This package will install the nymea.io plugin for Sonos smart speakers
Package: nymea-plugin-snapd
Architecture: any
Depends: ${shlibs:Depends},
${misc:Depends},
nymea-plugins-translations,
Replaces: guh-plugin-snapd
Description: nymea.io plugin for snapd
The nymea daemon is a plugin based IoT (Internet of Things) server. The
server works like a translator for devices, things and services and
allows them to interact.
With the powerful rule engine you are able to connect any device available
in the system and create individual scenes and behaviors for your environment.
.
This package will install the nymea.io plugin for snapd
Package: nymea-plugin-sunposition
Architecture: any
Depends: ${misc:Depends},
@ -1274,7 +1258,6 @@ Section: libs
Architecture: all
Depends: nymea-plugins,
nymea-plugin-simulation,
nymea-plugin-snapd,
nymea-plugins-maker,
nymea-plugins-merkurboard,
Replaces: guh-plugins-all

View File

@ -1 +0,0 @@
usr/lib/@DEB_HOST_MULTIARCH@/nymea/plugins/libnymea_integrationpluginsnapd.so

View File

@ -51,7 +51,6 @@ PLUGIN_DIRS = \
senic \
serialportcommander \
simulation \
snapd \
somfytahoma \
sonos \
sunposition \

View File

@ -1,4 +0,0 @@
# Snapd
This plugin allows to interact with the snap daemon in order to trigger updates, change the channel of snaps check if there are snaps which could be refreshed.
The plugin allows also to change the refresh schedule of snapd.

View File

@ -1,292 +0,0 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "integrationpluginsnapd.h"
#include "integrations/thing.h"
#include "plugininfo.h"
#include "network/networkaccessmanager.h"
IntegrationPluginSnapd::IntegrationPluginSnapd()
{
}
IntegrationPluginSnapd::~IntegrationPluginSnapd()
{
hardwareManager()->pluginTimerManager()->unregisterTimer(m_refreshTimer);
hardwareManager()->pluginTimerManager()->unregisterTimer(m_updateTimer);
}
void IntegrationPluginSnapd::init()
{
// Initialize plugin configurations
m_advancedMode = configValue(snapdPluginAdvancedModeParamTypeId).toBool();
m_refreshTime = configValue(snapdPluginRefreshScheduleParamTypeId).toInt();
connect(this, &IntegrationPluginSnapd::configValueChanged, this, &IntegrationPluginSnapd::onPluginConfigurationChanged);
// Refresh timer for snapd checks
m_refreshTimer = hardwareManager()->pluginTimerManager()->registerTimer(2);
connect(m_refreshTimer, &PluginTimer::timeout, this, &IntegrationPluginSnapd::onRefreshTimer);
// Check all 4 hours if there is an update available
m_updateTimer = hardwareManager()->pluginTimerManager()->registerTimer(14400);
connect(m_updateTimer, &PluginTimer::timeout, this, &IntegrationPluginSnapd::onUpdateTimer);
}
void IntegrationPluginSnapd::startMonitoringAutoThings()
{
// Check if we already have a controller and if snapd is available
if (m_snapdControl && !m_snapdControl->available()) {
return;
}
// Check if we already have a thing for the snapd control
bool deviceAlreadyExists = false;
foreach (Thing *thing, myThings()) {
if (thing->thingClassId() == snapdControlThingClassId) {
deviceAlreadyExists = true;
}
}
// Add thing if there isn't already one
if (!deviceAlreadyExists) {
ThingDescriptor descriptor(snapdControlThingClassId, "Update manager");
emit autoThingsAppeared({descriptor});
}
}
void IntegrationPluginSnapd::postSetupThing(Thing *thing)
{
if (m_snapdControl && m_snapdControl->thing() == thing) {
m_snapdControl->update();
}
}
void IntegrationPluginSnapd::thingRemoved(Thing *thing)
{
if (thing->thingClassId() == snapdControlThingClassId) {
qCWarning(dcSnapd()) << "User deleted snapd control.";
// Clean up old thing
if (m_snapdControl) {
delete m_snapdControl;
m_snapdControl = nullptr;
}
// Respawn thing immediately
startMonitoringAutoThings();
} else if (thing->thingClassId() == snapThingClassId) {
if (m_snapDevices.values().contains(thing)) {
QString snapId = m_snapDevices.key(thing);
m_snapDevices.remove(snapId);
}
}
}
void IntegrationPluginSnapd::setupThing(ThingSetupInfo *info)
{
Thing *thing = info->thing();
qCDebug(dcSnapd()) << "Setup" << thing->name() << thing->params();
if (thing->thingClassId() == snapdControlThingClassId) {
if (m_snapdControl) {
delete m_snapdControl;
m_snapdControl = nullptr;
}
m_snapdControl = new SnapdControl(thing, this);
m_snapdControl->setPreferredRefreshTime(configValue(snapdPluginRefreshScheduleParamTypeId).toInt());
connect(m_snapdControl, &SnapdControl::snapListUpdated, this, &IntegrationPluginSnapd::onSnapListUpdated);
} else if (thing->thingClassId() == snapThingClassId) {
thing->setName(QString("%1").arg(thing->paramValue(snapThingNameParamTypeId).toString()));
m_snapDevices.insert(thing->paramValue(snapThingIdParamTypeId).toString(), thing);
}
info->finish(Thing::ThingErrorNoError);
}
void IntegrationPluginSnapd::executeAction(ThingActionInfo *info)
{
Thing *thing = info->thing();
Action action = info->action();
if (thing->thingClassId() == snapdControlThingClassId) {
if (!m_snapdControl) {
qCDebug(dcSnapd()) << "There is currently no snapd controller.";
return info->finish(Thing::ThingErrorHardwareFailure);
}
if (!m_snapdControl->connected()) {
qCDebug(dcSnapd()) << "Snapd controller not connected to to backend.";
return info->finish(Thing::ThingErrorHardwareFailure);
}
if (action.actionTypeId() == snapdControlStartUpdateActionTypeId) {
m_snapdControl->snapRefresh();
return info->finish(Thing::ThingErrorNoError);
} else if (action.actionTypeId() == snapdControlCheckUpdatesActionTypeId) {
m_snapdControl->checkForUpdates();
return info->finish(Thing::ThingErrorNoError);
}
return info->finish(Thing::ThingErrorActionTypeNotFound);
} else if (thing->thingClassId() == snapThingClassId) {
if (!m_snapdControl) {
qCDebug(dcSnapd()) << "There is currently no snapd controller.";
return info->finish(Thing::ThingErrorHardwareFailure);
}
if (!m_snapdControl->connected()) {
qCDebug(dcSnapd()) << "Snapd controller not connected to the backend.";
return info->finish(Thing::ThingErrorHardwareFailure);
}
if (action.actionTypeId() == snapChannelActionTypeId) {
QString snapName = thing->paramValue(snapThingNameParamTypeId).toString();
m_snapdControl->changeSnapChannel(snapName, action.param(snapChannelActionChannelParamTypeId).value().toString());
return info->finish(Thing::ThingErrorNoError);
} else if (action.actionTypeId() == snapRevertActionTypeId) {
QString snapName = thing->paramValue(snapThingNameParamTypeId).toString();
m_snapdControl->snapRevert(snapName);
return info->finish(Thing::ThingErrorNoError);
}
return info->finish(Thing::ThingErrorActionTypeNotFound);
}
return info->finish(Thing::ThingErrorThingClassNotFound);
}
void IntegrationPluginSnapd::onPluginConfigurationChanged(const ParamTypeId &paramTypeId, const QVariant &value)
{
qCDebug(dcSnapd()) << "Plugin configuration changed";
// Check advanced mode
if (paramTypeId == snapdPluginAdvancedModeParamTypeId) {
qCDebug(dcSnapd()) << "Advanced mode" << (value.toBool() ? "enabled." : "disabled.");
m_advancedMode = value.toBool();
// If advanced mode disabled, clean up all snap devices
if (!m_advancedMode) {
foreach (const QString deviceSnapId, m_snapDevices.keys()) {
Thing *thing = m_snapDevices.take(deviceSnapId);
qCDebug(dcSnapd()) << "Remove thing for snap" << thing->paramValue(snapThingNameParamTypeId).toString();
emit autoThingDisappeared(thing->id());
}
} else {
if (!m_snapdControl)
return;
m_snapdControl->update();
}
}
// Check refresh schedule
if (paramTypeId == snapdPluginRefreshScheduleParamTypeId) {
if (!m_snapdControl)
return;
m_refreshTime = value.toInt();
qCDebug(dcSnapd()) << "Refresh schedule start time" << QTime(m_refreshTime, 0, 0).toString("hh:mm");
m_snapdControl->setPreferredRefreshTime(m_refreshTime);
}
}
void IntegrationPluginSnapd::onRefreshTimer()
{
if (!m_snapdControl) {
startMonitoringAutoThings();
return;
}
m_snapdControl->update();
}
void IntegrationPluginSnapd::onUpdateTimer()
{
if (!m_snapdControl)
return;
m_snapdControl->checkForUpdates();
}
void IntegrationPluginSnapd::onSnapListUpdated(const QVariantList &snapList)
{
// Check for new snap devices only in advanced mode
if (!m_advancedMode)
return;
// Collect list of snap id's from snapList for remove checking
QStringList snapIdList;
// Check if we have to create a new thing
foreach (const QVariant &snapVariant, snapList) {
QVariantMap snapMap = snapVariant.toMap();
snapIdList.append(snapMap.value("id").toString());
// If there is no thing for this snap yet
if (!m_snapDevices.contains(snapMap.value("id").toString())) {
ThingDescriptor descriptor(snapThingClassId, QString("Snap %1").arg(snapMap.value("name").toString()));
ParamList params;
params.append(Param(snapThingNameParamTypeId, snapMap.value("name")));
params.append(Param(snapThingIdParamTypeId, snapMap.value("id")));
params.append(Param(snapThingSummaryParamTypeId, snapMap.value("summary")));
params.append(Param(snapThingDescriptionParamTypeId, snapMap.value("description")));
params.append(Param(snapThingDeveloperParamTypeId, snapMap.value("developer")));
descriptor.setParams(params);
emit autoThingsAppeared({descriptor});
} else {
// Update the states
Thing *thing = m_snapDevices.value(snapMap.value("id").toString(), nullptr);
if (!thing) {
qCWarning(dcSnapd()) << "Holding invalid snap thing. This should never happen. Please report a bug if you see this message.";
continue;
}
thing->setStateValue(snapChannelStateTypeId, snapMap.value("channel").toString());
thing->setStateValue(snapVersionStateTypeId, snapMap.value("version").toString());
thing->setStateValue(snapRevisionStateTypeId, snapMap.value("revision").toString());
}
}
// Check if we have to remove a thing
foreach (const QString deviceSnapId, m_snapDevices.keys()) {
if (!snapIdList.contains(deviceSnapId)) {
Thing *thing = m_snapDevices.take(deviceSnapId);
qCDebug(dcSnapd()) << "The snap" << thing->paramValue(snapThingNameParamTypeId).toString() << "is not installed any more.";
emit autoThingDisappeared(thing->id());
}
}
}

View File

@ -1,81 +0,0 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef INTEGRATIONPLUGINSNAPD_H
#define INTEGRATIONPLUGINSNAPD_H
#include "integrations/integrationplugin.h"
#include "plugintimer.h"
#include <QDebug>
#include <QNetworkInterface>
#include <QProcess>
#include <QUrlQuery>
#include "snapdcontrol.h"
class IntegrationPluginSnapd: public IntegrationPlugin {
Q_OBJECT
Q_PLUGIN_METADATA(IID "io.nymea.IntegrationPlugin" FILE "integrationpluginsnapd.json")
Q_INTERFACES(IntegrationPlugin)
public:
explicit IntegrationPluginSnapd();
~IntegrationPluginSnapd();
void init() override;
void startMonitoringAutoThings() override;
void postSetupThing(Thing *thing) override;
void thingRemoved(Thing *thing) override;
void setupThing(ThingSetupInfo *info) override;
void executeAction(ThingActionInfo *info) override;
private:
SnapdControl *m_snapdControl = nullptr;
PluginTimer *m_refreshTimer = nullptr;
PluginTimer *m_updateTimer = nullptr;
bool m_advancedMode = false;
int m_refreshTime = 2;
// Snap list for faster access (snap id, thing)
QHash<QString, Thing *> m_snapDevices;
private slots:
void onPluginConfigurationChanged(const ParamTypeId &paramTypeId, const QVariant &value);
void onRefreshTimer();
void onUpdateTimer();
void onSnapListUpdated(const QVariantList &snapList);
};
#endif // INTEGRATIONPLUGINSNAPD_H

View File

@ -1,193 +0,0 @@
{
"name": "Snapd",
"displayName": "Snapd",
"id": "b82bce59-59bf-48b3-b781-54a6f45800f3",
"paramTypes": [
{
"id": "017fe4c5-fc41-41fe-8e67-08fdaccb89ea",
"name": "advancedMode",
"displayName": "Advanced mode",
"type": "bool",
"defaultValue": false
},
{
"id": "d2e697d1-9a68-4666-bf40-8d70fa694eec",
"name": "refreshSchedule",
"displayName": "Automatic daily refresh schedule",
"type": "int",
"unit": "Hours",
"minValue": 0,
"maxValue": 23,
"defaultValue": 2
}
],
"vendors": [
{
"displayName": "Canonical",
"name": "canonical",
"id": "60582ddf-32ea-4fcd-a6f2-f3beaaf21517",
"thingClasses": [
{
"id": "d90cda58-4d8c-4b7f-a982-38e56a95b72a",
"name": "snapdControl",
"displayName": "Update manager",
"createMethods": [ "auto" ],
"interfaces": [ "system" ],
"paramTypes": [ ],
"actionTypes": [
{
"id": "45626b75-f09d-4dd1-b6c4-ee33201b47b0",
"name": "startUpdate",
"displayName": "Start update",
"paramTypes": [ ]
},
{
"id": "4738f2c9-666e-45b9-91d3-7bcbf722b669",
"name": "checkUpdates",
"displayName": "Check for updates",
"paramTypes": [ ]
}
],
"stateTypes": [
{
"id": "6b662b3e-fd12-4f24-be77-aec066f16d8c",
"name": "snapdAvailable",
"displayName": "Update manager available",
"displayNameEvent": "Update manager available changed",
"type": "bool",
"defaultValue": false
},
{
"id": "a6b1d24b-d523-4516-9bce-5b467e5e09b2",
"name": "updateAvailable",
"displayName": "System update available",
"displayNameEvent": "System update available changed",
"type": "bool",
"cached": false,
"defaultValue": false
},
{
"id": "01ca7a22-5607-4c5e-a465-a2ae7e8b529c",
"name": "updateRunning",
"displayName": "System update running",
"displayNameEvent": "System update running changed",
"type": "bool",
"defaultValue": false
},
{
"id": "c671545a-6bde-4c08-8e37-0d256841a3a5",
"name": "lastUpdateTime",
"displayName": "Last automatic system update",
"displayNameEvent": "Last automatic system update time changed",
"unit": "UnixTime",
"type": "int",
"defaultValue": 0
},
{
"id": "122c2423-a1d9-400f-80f8-b1f798975914",
"name": "nextUpdateTime",
"displayName": "Next automatic system update",
"displayNameEvent": "Next automatic system update time changed",
"unit": "UnixTime",
"type": "int",
"defaultValue": 0
},
{
"id": "4987aca3-3916-4cb3-938f-df6c99d04dbf",
"name": "status",
"displayName": "Status",
"displayNameEvent": "Status changed",
"type": "QString",
"defaultValue": "-"
}
]
},
{
"id": "ff0840d7-fcfc-4403-9d9f-301610d5a437",
"name": "snap",
"displayName": "Snap",
"createMethods": [ "auto" ],
"interfaces": ["system"],
"paramTypes": [
{
"id": "4f38614d-8be0-48dc-a24d-cee9ff1f2a89",
"name": "name",
"displayName": "Name",
"type": "QString",
"defaultValue": "-"
},
{
"id": "9afb98fb-f717-4f4c-8009-1a6514054c5f",
"name": "id",
"displayName": "ID",
"type": "QString",
"defaultValue": "-"
},
{
"id": "12b9a65f-970b-49b5-b1d0-1625fc6d8758",
"name": "summary",
"displayName": "Summary",
"type": "QString",
"defaultValue": "-"
},
{
"id": "fe24c61b-e154-4259-b7ca-6f0602e9d1c3",
"name": "description",
"displayName": "Description",
"type": "QString",
"defaultValue": "-"
},
{
"id": "76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5",
"name": "developer",
"displayName": "Developer",
"type": "QString",
"defaultValue": "-"
}
],
"actionTypes": [
{
"id": "e061dee6-62fc-45cc-9c9f-403c2be52939",
"name": "revert",
"displayName": "Rollback to previous version"
}
],
"stateTypes": [
{
"id": "7be2b61e-3f59-4b92-b2bb-50d027bb92ff",
"name": "channel",
"displayName": "Channel",
"displayNameEvent": "Channel changed",
"displayNameAction": "Set channel",
"type": "QString",
"defaultValue": "stable",
"writable": true,
"possibleValues": [
"stable",
"candidate",
"beta",
"edge"
]
},
{
"id": "532a95f3-db29-427e-bb32-d5a22029e586",
"name": "version",
"displayName": "Version",
"displayNameEvent": "Version changed",
"type": "QString",
"defaultValue": "-"
},
{
"id": "f26a6404-e011-11e7-9224-2350048461eb",
"name": "revision",
"displayName": "Revision",
"displayNameEvent": "Revision changed",
"type": "QString",
"defaultValue": "-"
}
]
}
]
}
]
}

View File

@ -1,13 +0,0 @@
{
"title": "Snapd",
"tagline": "Control the Snap daemon.",
"icon": "snapd.svg",
"stability": "consumer",
"offline": true,
"technologies": [
"cloud"
],
"categories": [
"tool"
]
}

View File

@ -1,17 +0,0 @@
include(../plugins.pri)
TARGET = $$qtLibraryTarget(nymea_integrationpluginsnapd)
QT += network
SOURCES += \
integrationpluginsnapd.cpp \
snapdcontrol.cpp \
snapdconnection.cpp \
snapdreply.cpp
HEADERS += \
integrationpluginsnapd.h \
snapdcontrol.h \
snapdconnection.h \
snapdreply.h

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -1,386 +0,0 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "snapdconnection.h"
#include "extern-plugininfo.h"
#include <QPointer>
#include <QJsonDocument>
#include <QJsonParseError>
SnapdConnection::SnapdConnection(QObject *parent) :
QLocalSocket(parent)
{
connect(this, &QLocalSocket::connected, this, &SnapdConnection::onConnected);
connect(this, &QLocalSocket::disconnected, this, &SnapdConnection::onDisconnected);
connect(this, &QLocalSocket::readyRead, this, &SnapdConnection::onReadyRead);
connect(this, &QLocalSocket::stateChanged, this, &SnapdConnection::onStateChanged);
connect(this, SIGNAL(error(QLocalSocket::LocalSocketError)), this, SLOT(onError(QLocalSocket::LocalSocketError)));
}
SnapdConnection::~SnapdConnection()
{
close();
}
SnapdReply *SnapdConnection::get(const QString &path, QObject *parent)
{
SnapdReply *reply = new SnapdReply(parent);
reply->setRequestPath(path);
reply->setRequestMethod("GET");
reply->setRequestRawMessage(createRequestHeader("GET", path));
// Enqueue the new reply
m_replyQueue.enqueue(reply);
sendNextRequest();
// Note: the caller owns the object now
return reply;
}
SnapdReply *SnapdConnection::post(const QString &path, const QByteArray &payload, QObject *parent)
{
SnapdReply *reply = new SnapdReply(parent);
reply->setRequestPath(path);
reply->setRequestMethod("POST");
QByteArray header = createRequestHeader("POST", path, payload);
reply->setRequestRawMessage(header.append(payload));
// Enqueue the new reply
m_replyQueue.enqueue(reply);
sendNextRequest();
// Note: the caller owns the object now
return reply;
}
SnapdReply *SnapdConnection::put(const QString &path, const QByteArray &payload, QObject *parent)
{
SnapdReply *reply = new SnapdReply(parent);
reply->setRequestPath(path);
reply->setRequestMethod("PUT");
QByteArray header = createRequestHeader("PUT", path, payload);
reply->setRequestRawMessage(header.append(payload));
// Enqueue the new reply
m_replyQueue.enqueue(reply);
sendNextRequest();
// Note: the caller owns the object now
return reply;
}
bool SnapdConnection::isConnected() const
{
return m_connected;
}
void SnapdConnection::setConnected(const bool &connected)
{
if (m_connected == connected)
return;
m_connected = connected;
emit connectedChanged(m_connected);
// Clean up replies of disconnected
if (!m_connected) {
// Clean up current reply
if (m_currentReply) {
m_currentReply->setFinished(false);
m_currentReply = nullptr;
}
// Clean up queue
while (!m_replyQueue.isEmpty()) {
QPointer<SnapdReply> reply = m_replyQueue.dequeue();
if (!reply.isNull()) {
reply->deleteLater();
}
}
} else {
// Start with a clean parsing
m_payload.clear();
m_header.clear();
m_chuncked = false;
}
}
QByteArray SnapdConnection::createRequestHeader(const QString &method, const QString &path, const QByteArray &payload)
{
QByteArray request;
request.append(QString("%1 %2 HTTP/1.1\r\n").arg(method).arg(path).toUtf8());
request.append("Host: http\r\n");
request.append("Accept: *\r\n");
if (!payload.isEmpty()) {
request.append("Content-Type: application/json\r\n");
request.append(QString("Content-Length: %1\r\n").arg(payload.count()).toUtf8());
}
request.append("\r\n");
return request;
}
QByteArray SnapdConnection::getChunckedPayload(const QByteArray &payload)
{
// Read line by line
QStringList payloadLines = QString::fromUtf8(payload).split(QRegExp("\r\n"));
if (payloadLines.count() < 4) {
qCWarning(dcSnapd()) << "Chuncked payload invalid linecount" << payloadLines.count();
return QByteArray();
}
int payloadSize = payloadLines.at(2).toInt(0, 16);
if (m_debug)
qCDebug(dcSnapd()) << "Payload size" << payloadSize;
if (payloadLines.at(3).toUtf8().size() != payloadSize) {
qCWarning(dcSnapd()) << "Invalid payload size" << payloadLines.at(3).toUtf8().size() << "!=" << payloadSize;
return QByteArray();
}
// Return just the payload
return payloadLines.at(3).toUtf8();
}
void SnapdConnection::processData()
{
if (!m_currentReply) {
qCWarning(dcSnapd()) << "Data received without current reply" << m_payload;
return;
}
if (m_header.isEmpty()) {
qCWarning(dcSnapd()) << "Could not process data. There is no header.";
m_currentReply->setFinished();
return;
}
// Get the raw payload
QByteArray payloadData;
if (m_chuncked) {
payloadData = getChunckedPayload(m_payload);
} else {
payloadData = m_payload;
}
// Check if there are data to process
if (m_payload.isEmpty()) {
qCWarning(dcSnapd()) << "Could not process data. There is no payload to process.";
return;
}
// Parse header
QHash<QString, QString> parsedHeader;
QStringList headerLines = QString::fromUtf8(m_header).split(QRegExp("\r\n"));
// Read status line
QString statusLine = headerLines.takeFirst();
QStringList statusLineTokens = statusLine.split(QRegExp("[ \r\n][ \r\n]*"));
if (statusLineTokens.count() < 3) {
qCWarning(dcSnapd()) << "Could not parse HTTP status line:" << statusLine;
return;
}
bool statusCodeOk = false;
int statusCode = statusLineTokens.at(1).simplified().toInt(&statusCodeOk);
if (!statusCodeOk) {
qCWarning(dcSnapd()) << "Could not parse HTTP status code:" << statusLineTokens.at(1);
return;
}
QString statusMessage;
for (int i = 2; i < statusLineTokens.count(); i++) {
statusMessage.append(statusLineTokens.at(i).simplified());
if (i < statusLineTokens.count() -1) {
statusMessage.append(" ");
}
}
// Verify header formating
foreach (const QString &line, headerLines) {
if (!line.contains(":")) {
qCWarning(dcSnapd()) << "Invalid HTTP header. Missing \":\" in line" << line;
return;
}
int index = line.indexOf(":");
QString key = line.left(index).toUtf8().simplified();
QString value = line.right(line.count() - index - 1).toUtf8().simplified();
//qCDebug(dcSnapd()) << " Key:" << key << "Value:" << value;
parsedHeader.insert(key, value);
}
// Parse payload
QJsonParseError error;
QJsonDocument jsonDoc = QJsonDocument::fromJson(payloadData, &error);
if (error.error != QJsonParseError::NoError) {
qCWarning(dcSnapd()) << "Got invalid JSON data from snapd:" << error.offset << error.errorString();
qCWarning(dcSnapd()) << qUtf8Printable(payloadData);
return;
}
if (m_debug)
qCDebug(dcSnapd()) << "<--" << m_currentReply->requestPath() << statusCode << statusMessage;
// Fill reply
m_currentReply->setStatusCode(statusCode);
m_currentReply->setStatusMessage(statusMessage);
m_currentReply->setHeader(parsedHeader);
m_currentReply->setDataMap(jsonDoc.toVariant().toMap());
m_currentReply->setFinished();
// Current data stream finished, reset for new messages
m_payload.clear();
m_header.clear();
m_chuncked = false;
// Ready for next reply
m_currentReply = nullptr;
sendNextRequest();
}
void SnapdConnection::sendNextRequest()
{
// Check if nothing else to do
if (m_replyQueue.isEmpty())
return;
// Check a reply is currently pending
if (m_currentReply)
return;
// Dequeue and send next reply
SnapdReply *reply = m_replyQueue.dequeue();
m_currentReply = reply;
if (m_debug)
qCDebug(dcSnapd()) << "-->" << reply->requestMethod() << reply->requestPath();
// Send current reply request. If write failes, the reply is finished invalid and the owner has to delete it
qint64 bytesWritten = write(reply->requestRawMessage());
if (bytesWritten < 0) {
qCWarning(dcSnapd()) << "Could not write request data" << reply->requestMethod() << reply->requestMethod();
m_currentReply->setFinished(false);
m_currentReply = nullptr;
sendNextRequest();
}
}
void SnapdConnection::onConnected()
{
setConnected(true);
}
void SnapdConnection::onDisconnected()
{
setConnected(false);
}
void SnapdConnection::onError(const QLocalSocket::LocalSocketError &socketError)
{
qCWarning(dcSnapd()) << "Socket error" << socketError << errorString();
}
void SnapdConnection::onStateChanged(const QLocalSocket::LocalSocketState &state)
{
switch (state) {
case QLocalSocket::UnconnectedState:
qCDebug(dcSnapd()) << "Disconnected from snapd.";
break;
case QLocalSocket::ConnectingState:
qCDebug(dcSnapd()) << "Connecting to snapd...";
break;
case QLocalSocket::ConnectedState:
qCDebug(dcSnapd()) << "Connected to snapd.";
break;
case QLocalSocket::ClosingState:
qCDebug(dcSnapd()) << "Closing connection to snapd.";
break;
default:
break;
}
}
void SnapdConnection::onReadyRead()
{
QByteArray data = readAll();
if (m_debug)
qCDebug(dcSnapd()) << "Data received:" << data;
// If we are not appending to a reply
if (!m_chuncked) {
// Parse header
int headerIndex = data.indexOf("\r\n\r\n");
if (headerIndex < 0) {
qCWarning(dcSnapd()) << "Invalid response format. Could not find header/payload mark.";
return;
}
m_header = data.left(headerIndex);
if (m_debug)
qCDebug(dcSnapd()) << "Header:" << m_header;
QByteArray payload = data.right(data.length() - (headerIndex));
if (m_debug)
qCDebug(dcSnapd()) << "Payload" << payload;
// Check if this message is chuncked
if (m_header.contains("chunked")) {
if (m_debug)
qCDebug(dcSnapd()) << "Chuncked message receiving";
m_chuncked = true;
m_payload.append(payload);
if (m_payload.endsWith("\r\n0\r\n\r\n")) {
// Chuncked message finished
processData();
}
} else {
// Not chucked
m_payload = payload;
processData();
}
} else {
m_payload.append(data);
if (m_payload.endsWith("\r\n0\r\n\r\n")) {
// Chuncked message finished
processData();
}
}
}

View File

@ -1,86 +0,0 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef SNAPDCONNECTION_H
#define SNAPDCONNECTION_H
#include <QQueue>
#include <QObject>
#include <QLocalSocket>
#include "snapdreply.h"
class SnapdConnection : public QLocalSocket
{
Q_OBJECT
public:
explicit SnapdConnection(QObject *parent = nullptr);
~SnapdConnection();
SnapdReply *get(const QString &path, QObject *parent);
SnapdReply *post(const QString &path, const QByteArray &payload, QObject *parent);
SnapdReply *put(const QString &path, const QByteArray &payload, QObject *parent);
bool isConnected() const;
private:
bool m_chuncked = false;
QByteArray m_header;
QByteArray m_payload;
bool m_connected = false;
bool m_debug = false;
SnapdReply *m_currentReply = nullptr;
QQueue<SnapdReply *> m_replyQueue;
void setConnected(const bool &connected);
// Helper methods
QByteArray createRequestHeader(const QString &method, const QString &path, const QByteArray &payload = QByteArray());
QByteArray getChunckedPayload(const QByteArray &payload);
void processData();
void sendNextRequest();
signals:
void connectedChanged(const bool &connected);
private slots:
void onConnected();
void onDisconnected();
void onError(const QLocalSocket::LocalSocketError &socketError);
void onStateChanged(const QLocalSocket::LocalSocketState &state);
void onReadyRead();
};
#endif // SNAPDCONNECTION_H

View File

@ -1,496 +0,0 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "snapdcontrol.h"
#include "extern-plugininfo.h"
#include <QFileInfo>
#include <QDateTime>
#include <QJsonDocument>
#include <QJsonParseError>
SnapdControl::SnapdControl(Thing *thing, QObject *parent) :
QObject(parent),
m_device(thing),
m_snapdSocketPath("/run/snapd.socket")
{
// If a change is one of following kind, the plugin will recognize it as update running
m_updateChangeKinds.append("install-snap");
m_updateChangeKinds.append("remove-snap");
m_updateChangeKinds.append("refresh-snap");
m_updateChangeKinds.append("revert-snap");
m_snapConnection = new SnapdConnection(this);
connect(m_snapConnection, &SnapdConnection::connectedChanged, this, &SnapdControl::onConnectedChanged);
}
Thing *SnapdControl::thing()
{
return m_device;
}
bool SnapdControl::available() const
{
QFileInfo fileInfo(m_snapdSocketPath);
if (!fileInfo.exists()) {
qCDebug(dcSnapd()) << "The socket descriptor" << m_snapdSocketPath << "does not exist";
return false;
}
if (!fileInfo.isReadable()) {
qCDebug(dcSnapd()) << "The socket descriptor" << m_snapdSocketPath << "is not readable";
return false;
}
if (!fileInfo.isWritable()) {
qCDebug(dcSnapd()) << "The socket descriptor" << m_snapdSocketPath << "is not writable";
return false;
}
return true;
}
bool SnapdControl::connected() const
{
return m_snapConnection->isConnected();
}
bool SnapdControl::enabled() const
{
return m_enabled;
}
bool SnapdControl::timerBasedSchedule() const
{
return m_timerBasedSchedule;
}
void SnapdControl::loadSystemInfo()
{
if (!m_snapConnection)
return;
if (!m_snapConnection->isConnected())
return;
SnapdReply *reply = m_snapConnection->get("/v2/system-info", this);
connect(reply, &SnapdReply::finished, this, &SnapdControl::onLoadSystemInfoFinished);
}
void SnapdControl::loadSnapList()
{
if (!m_snapConnection)
return;
if (!m_snapConnection->isConnected())
return;
SnapdReply *reply = m_snapConnection->get("/v2/snaps", this);
connect(reply, &SnapdReply::finished, this, &SnapdControl::onLoadSnapListFinished);
}
void SnapdControl::loadRunningChanges()
{
if (!m_snapConnection)
return;
if (!m_snapConnection->isConnected())
return;
SnapdReply *reply = m_snapConnection->get("/v2/changes", this);
connect(reply, &SnapdReply::finished, this, &SnapdControl::onLoadRunningChangesFinished);
}
void SnapdControl::configureRefreshSchedule()
{
if (!m_snapConnection)
return;
if (!m_snapConnection->isConnected())
return;
QVariantMap configuration; QVariantMap configMap;
configMap.insert("timer", m_preferredRefreshSchedule);
configMap.insert("schedule", m_preferredRefreshSchedule);
configuration.insert("refresh", configMap);
qCDebug(dcSnapd()) << "Configure refresh schedule from" << m_currentRefreshSchedule << "-->" << m_preferredRefreshSchedule;
SnapdReply *reply = m_snapConnection->put(QString("/v2/snaps/core/conf"), QJsonDocument::fromVariant(configuration).toJson(QJsonDocument::Compact), this);
connect(reply, &SnapdReply::finished, this, &SnapdControl::onConfigureRefreshScheduleFinished);
}
bool SnapdControl::validAsyncResponse(const QVariantMap &responseMap)
{
if (!responseMap.contains("type"))
return false;
if (responseMap.value("type") == "error")
return false;
return true;
}
void SnapdControl::onConnectedChanged(const bool &connected)
{
if (connected) {
thing()->setStateValue(snapdControlSnapdAvailableStateTypeId, true);
update();
} else {
thing()->setStateValue(snapdControlSnapdAvailableStateTypeId, false);
}
}
void SnapdControl::onLoadSystemInfoFinished()
{
SnapdReply *reply = static_cast<SnapdReply *>(sender());
if (!reply->isValid()) {
qCDebug(dcSnapd()) << "Load system info request finished with error" << reply->requestPath();
reply->deleteLater();
return;
}
QVariantMap result = reply->dataMap().value("result").toMap();
QDateTime lastRefreshTime = QDateTime::fromString(result.value("refresh").toMap().value("last").toString(), Qt::ISODate);
QDateTime nextRefreshTime = QDateTime::fromString(result.value("refresh").toMap().value("next").toString(), Qt::ISODate);
// Set update time information
thing()->setStateValue(snapdControlLastUpdateTimeStateTypeId, lastRefreshTime.toTime_t());
thing()->setStateValue(snapdControlNextUpdateTimeStateTypeId, nextRefreshTime.toTime_t());
// Check if we are working on refresh timer or refresh schedule
if (result.value("refresh").toMap().contains("schedule")) {
// Schedule based core snap
m_timerBasedSchedule = false;
m_currentRefreshSchedule = result.value("refresh").toMap().value("schedule").toString();
} else if (result.value("refresh").toMap().contains("timer")) {
// Timer based core snap: snapd >= 2.31
m_timerBasedSchedule = true;
m_currentRefreshSchedule = result.value("refresh").toMap().value("timer").toString();
}
reply->deleteLater();
// Check if the refresh schedule should be updated
if (m_currentRefreshSchedule != m_preferredRefreshSchedule) {
configureRefreshSchedule();
}
}
void SnapdControl::onLoadSnapListFinished()
{
SnapdReply *reply = static_cast<SnapdReply *>(sender());
if (!reply->isValid()) {
qCDebug(dcSnapd()) << "Load system info request finished with error" << reply->requestPath();
reply->deleteLater();
return;
}
emit snapListUpdated(reply->dataMap().value("result").toList());
reply->deleteLater();
}
void SnapdControl::onLoadRunningChangesFinished()
{
SnapdReply *reply = static_cast<SnapdReply *>(sender());
if (!reply->isValid()) {
qCDebug(dcSnapd()) << "Load running changes request finished with error" << reply->requestPath();
reply->deleteLater();
return;
}
// Load changes list
QVariantList changes = reply->dataMap().value("result").toList();
reply->deleteLater();
// If there are no running changes, update is not running
if (changes.isEmpty()) {
// Update not running any more
thing()->setStateValue(snapdControlUpdateRunningStateTypeId, false);
thing()->setStateValue(snapdControlStatusStateTypeId, "-");
return;
}
bool updateRunning = false;
QString updateStatus = "-";
// Verifiy if a change is running and which one is currently doing something
foreach (const QVariant &changeVariant, changes) {
QVariantMap changeMap = changeVariant.toMap();
int changeId = changeMap.value("id").toInt();
bool changeReady = changeMap.value("ready").toBool();
QString changeKind = changeMap.value("kind").toString();
QString changeStatus = changeMap.value("status").toString();
QString changeSummary = changeMap.value("summary").toString();
// If there is a change kind "Doing" or "Do"
if ( (changeStatus == "Doing" || changeStatus == "Do") && m_updateChangeKinds.contains(changeKind)) {
// Set the status of the current running change
updateRunning = true;
if (changeStatus == "Doing") {
updateStatus = changeSummary;
qCDebug(dcSnapd()).noquote() << "Current change:" << changeId << (changeReady ? "ready" : "not ready") << changeStatus << changeKind << changeSummary;
// TODO: calculate the overall percentage of the update process (Do + Doing / Done)
}
}
}
thing()->setStateValue(snapdControlUpdateRunningStateTypeId, updateRunning);
thing()->setStateValue(snapdControlStatusStateTypeId, updateStatus);
// If currently an update is running, lets force update available to false if set to true
// keep this below the setStateValue for updateRunning or we might have intermediate states indicating
// no update running and none available
if (updateRunning && thing()->stateValue(snapdControlUpdateAvailableStateTypeId).toBool()) {
thing()->setStateValue(snapdControlUpdateAvailableStateTypeId, false);
}
}
void SnapdControl::onConfigureRefreshScheduleFinished()
{
SnapdReply *reply = static_cast<SnapdReply *>(sender());
if (!reply->isValid()) {
qCDebug(dcSnapd()) << "Set refresh schedule request finished with error" << reply->requestPath();
reply->deleteLater();
return;
}
if (!validAsyncResponse(reply->dataMap())) {
qCWarning(dcSnapd()) << "Async refresh configuration request finished with error" << reply->dataMap().value("status").toString() << reply->dataMap().value("status-code").toInt();
reply->deleteLater();
return;
}
qCDebug(dcSnapd()) << "Configure refresh schedule finished successfully";
reply->deleteLater();
}
void SnapdControl::onSnapRefreshFinished()
{
SnapdReply *reply = static_cast<SnapdReply *>(sender());
if (!reply->isValid()) {
qCDebug(dcSnapd()) << "Snap refresh request finished with error" << reply->requestPath();
reply->deleteLater();
return;
}
if (!validAsyncResponse(reply->dataMap())) {
qCWarning(dcSnapd()) << "Async refresh request finished with error" << reply->dataMap().value("status").toString() << reply->dataMap().value("status-code").toInt();
} else {
loadRunningChanges();
}
reply->deleteLater();
}
void SnapdControl::onSnapRevertFinished()
{
SnapdReply *reply = static_cast<SnapdReply *>(sender());
if (!reply->isValid()) {
qCDebug(dcSnapd()) << "Snap revert request finished with error" << reply->requestPath();
reply->deleteLater();
return;
}
if (!validAsyncResponse(reply->dataMap())) {
qCWarning(dcSnapd()) << "Async change request finished with error" << reply->dataMap().value("status").toString() << reply->dataMap().value("status-code").toInt();;
} else {
loadRunningChanges();
}
reply->deleteLater();
}
void SnapdControl::onCheckForUpdatesFinished()
{
SnapdReply *reply = static_cast<SnapdReply *>(sender());
if (!reply->isValid()) {
qCDebug(dcSnapd()) << "Check for snap updates request finished with error" << reply->requestPath();
reply->deleteLater();
return;
}
qCDebug(dcSnapd()) << "Check for available snap updates finished.";
if (reply->dataMap().value("result").toList().isEmpty()) {
qCDebug(dcSnapd()) << "There are no snap updates available.";
thing()->setStateValue(snapdControlUpdateAvailableStateTypeId, false);
} else {
// Print available snap updates
qCDebug(dcSnapd()) << "Following snaps can be updated:";
foreach (const QVariant &resultVariant, reply->dataMap().value("result").toList()) {
QVariantMap resultMap = resultVariant.toMap();
qCDebug(dcSnapd()) << " -->" << resultMap.value("name").toString() << resultMap.value("version").toString();
}
thing()->setStateValue(snapdControlUpdateAvailableStateTypeId, true);
}
reply->deleteLater();
}
void SnapdControl::onChangeSnapChannelFinished()
{
SnapdReply *reply = static_cast<SnapdReply *>(sender());
if (!reply->isValid()) {
qCDebug(dcSnapd()) << "Change snap channel request finished with error" << reply->requestPath();
reply->deleteLater();
return;
}
if (!validAsyncResponse(reply->dataMap())) {
qCWarning(dcSnapd()) << "Async change request finished with error" << reply->dataMap().value("status").toString() << reply->dataMap().value("status-code").toInt();
} else {
loadRunningChanges();
}
reply->deleteLater();
}
void SnapdControl::enable()
{
m_enabled = true;
update();
}
void SnapdControl::disable()
{
m_enabled = false;
if (m_snapConnection) {
m_snapConnection->close();
}
}
void SnapdControl::update()
{
if (!m_snapConnection)
return;
if (!available())
return;
if (!enabled())
return;
// Try to reconnect if unconnected
if (m_snapConnection->state() == QLocalSocket::UnconnectedState) {
m_snapConnection->connectToServer(m_snapdSocketPath, QLocalSocket::ReadWrite);
return;
}
// Note: this makes sure the state is really connected (including connection initialisation stuff)
if (!m_snapConnection->isConnected())
return;
// Update information
if (thing()->stateValue(snapdControlUpdateRunningStateTypeId).toBool()) {
// Note: if an update is running, just load the changes to save system resources
loadRunningChanges();
} else {
// Normal update
loadSystemInfo();
loadSnapList();
loadRunningChanges();
}
}
void SnapdControl::snapRefresh()
{
if (!m_snapConnection)
return;
if (!m_snapConnection->isConnected())
return;
QVariantMap request;
request.insert("action", "refresh");
qCDebug(dcSnapd()) << "Refresh all snaps";
SnapdReply *reply = m_snapConnection->post("/v2/snaps", QJsonDocument::fromVariant(request).toJson(QJsonDocument::Compact), this);
connect(reply, &SnapdReply::finished, this, &SnapdControl::onSnapRefreshFinished);
}
void SnapdControl::changeSnapChannel(const QString &snapName, const QString &channel)
{
if (!m_snapConnection)
return;
if (!m_snapConnection->isConnected())
return;
QVariantMap request;
request.insert("action", "refresh");
request.insert("channel", channel);
qCDebug(dcSnapd()) << "Refresh snap" << snapName << "to channel" << channel;
SnapdReply *reply = m_snapConnection->post(QString("/v2/snaps/%1").arg(snapName), QJsonDocument::fromVariant(request).toJson(QJsonDocument::Compact), this);
connect(reply, &SnapdReply::finished, this, &SnapdControl::onChangeSnapChannelFinished);
}
void SnapdControl::checkForUpdates()
{
if (!m_snapConnection)
return;
if (!m_snapConnection->isConnected())
return;
qCDebug(dcSnapd()) << "Checking for available snap updates";
SnapdReply *reply = m_snapConnection->get("/v2/find?select=refresh", this);
connect(reply, &SnapdReply::finished, this, &SnapdControl::onCheckForUpdatesFinished);
}
void SnapdControl::setPreferredRefreshTime(int startTime)
{
// Schedule the refresh between startTime and startTime + 59 minutes
QTime start(startTime, 0, 0);
QTime end = start.addSecs(3540);
m_preferredRefreshSchedule = QString("%1-%2").arg(start.toString("h:mm")).arg(end.toString("h:mm"));
qCDebug(dcSnapd()) << "Set preferred refresh schedule to " << m_preferredRefreshSchedule;
}
void SnapdControl::snapRevert(const QString &snapName)
{
if (!m_snapConnection)
return;
if (!m_snapConnection->isConnected())
return;
QVariantMap request;
request.insert("action", "revert");
qCDebug(dcSnapd()) << "Revert snap" << snapName;
SnapdReply *reply = m_snapConnection->post(QString("/v2/snaps/%1").arg(snapName), QJsonDocument::fromVariant(request).toJson(QJsonDocument::Compact), this);
connect(reply, &SnapdReply::finished, this, &SnapdControl::onSnapRevertFinished);
}

View File

@ -1,107 +0,0 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef SNAPDCONTROL_H
#define SNAPDCONTROL_H
#include <QObject>
#include <QLocalSocket>
#include "integrations/thing.h"
#include "snapdconnection.h"
class SnapdControl : public QObject
{
Q_OBJECT
public:
explicit SnapdControl(Thing *thing, QObject *parent = nullptr);
Thing *thing();
bool available() const;
bool connected() const;
bool enabled() const;
bool timerBasedSchedule() const;
private:
Thing *m_device = nullptr;
SnapdConnection *m_snapConnection = nullptr;
QString m_snapdSocketPath;
bool m_enabled = true;
QStringList m_updateChangeKinds;
bool m_timerBasedSchedule = false;
QString m_currentRefreshSchedule;
QString m_preferredRefreshSchedule;
// Update calls
void loadSystemInfo();
void loadSnapList();
void loadRunningChanges();
void configureRefreshSchedule();
bool validAsyncResponse(const QVariantMap &responseMap);
private slots:
void onConnectedChanged(const bool &connected);
// Response handler for different requests
void onLoadSystemInfoFinished();
void onLoadSnapListFinished();
void onLoadRunningChangesFinished();
void onConfigureRefreshScheduleFinished();
void onSnapRefreshFinished();
void onSnapRevertFinished();
void onCheckForUpdatesFinished();
void onChangeSnapChannelFinished();
signals:
void snapListUpdated(const QVariantList &snapList);
public slots:
void enable();
void disable();
// Snapd request calls
void update();
void snapRefresh();
void checkForUpdates();
void setPreferredRefreshTime(int startTime);
void snapRevert(const QString &snapName);
void changeSnapChannel(const QString &snapName, const QString &channel);
};
#endif // SNAPDCONTROL_H

View File

@ -1,125 +0,0 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "snapdreply.h"
QString SnapdReply::requestPath() const
{
return m_requestPath;
}
QString SnapdReply::requestMethod() const
{
return m_requestMethod;
}
QByteArray SnapdReply::requestRawMessage() const
{
return m_requestRawMessage;
}
int SnapdReply::statusCode() const
{
return m_statusCode;
}
QString SnapdReply::statusMessage() const
{
return m_statusMessage;
}
QHash<QString, QString> SnapdReply::header() const
{
return m_header;
}
QVariantMap SnapdReply::dataMap() const
{
return m_dataMap;
}
bool SnapdReply::isFinished() const
{
return m_isFinished;
}
bool SnapdReply::isValid() const
{
return m_valid;
}
SnapdReply::SnapdReply(QObject *parent) :
QObject(parent)
{
}
void SnapdReply::setRequestPath(const QString &requestPath)
{
m_requestPath = requestPath;
}
void SnapdReply::setRequestMethod(const QString &requestMethod)
{
m_requestMethod = requestMethod;
}
void SnapdReply::setRequestRawMessage(const QByteArray &rawMessage)
{
m_requestRawMessage = rawMessage;
}
void SnapdReply::setStatusCode(const int &statusCode)
{
m_statusCode = statusCode;
}
void SnapdReply::setStatusMessage(const QString &statusMessage)
{
m_statusMessage = statusMessage;
}
void SnapdReply::setHeader(const QHash<QString, QString> header)
{
m_header = header;
}
void SnapdReply::setDataMap(const QVariantMap &dataMap)
{
m_dataMap = dataMap;
}
void SnapdReply::setFinished(const bool &valid)
{
m_isFinished = true;
m_valid = valid;
emit finished();
}

View File

@ -1,90 +0,0 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef SNAPDREPLY_H
#define SNAPDREPLY_H
#include <QHash>
#include <QObject>
#include <QVariantMap>
class SnapdReply : public QObject
{
Q_OBJECT
friend class SnapdConnection;
public:
// Request
QString requestPath() const;
QString requestMethod() const;
QByteArray requestRawMessage() const;
// Response
int statusCode() const;
QString statusMessage() const;
QHash<QString, QString> header() const;
QVariantMap dataMap() const;
bool isFinished() const;
bool isValid() const;
private:
explicit SnapdReply(QObject *parent = nullptr);
QString m_requestPath;
QString m_requestMethod;
QByteArray m_requestRawMessage;
int m_statusCode;
QString m_statusMessage;
QHash<QString, QString> m_header;
QVariantMap m_dataMap;
bool m_isFinished = false;
bool m_valid = false;
// Methods for SnapdConnection
void setRequestPath(const QString &requestPath);
void setRequestMethod(const QString &requestMethod);
void setRequestRawMessage(const QByteArray &rawMessage);
void setStatusCode(const int &statusCode);
void setStatusMessage(const QString &statusMessage);
void setHeader(const QHash<QString, QString> header);
void setDataMap(const QVariantMap &dataMap);
void setFinished(const bool &valid = true);
signals:
void finished();
};
#endif // SNAPDREPLY_H

View File

@ -1,235 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="cs">
<context>
<name>Snapd</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="135"/>
<source>Snapd</source>
<extracomment>The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="63"/>
<source>Advanced mode</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea})</extracomment>
<translation>Rozšířený režim</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="66"/>
<source>Automatic daily refresh schedule</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec})</extracomment>
<translation>Automaticky denně obnovit seznam</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="69"/>
<source>Canonical</source>
<extracomment>The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517})</extracomment>
<translation>Canonical</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="159"/>
<source>System update available changed</source>
<extracomment>The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Aktualizace systému k dispozici změněno</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="102"/>
<source>Last automatic system update time changed</source>
<extracomment>The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Poslední aktualizace automatického systému čas změněn</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="96"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="99"/>
<source>Last automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5})
----------
The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Poslední aktualizace automatického systému</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="114"/>
<source>Next automatic system update time changed</source>
<extracomment>The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Další aktualizace automatického systému čas změněn</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="108"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="111"/>
<source>Next automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914})
----------
The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Další aktualizace automatického systému</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="141"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="144"/>
<source>Status</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf})
----------
The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Status</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="93"/>
<source>ID</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f})</extracomment>
<translation>ID</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="150"/>
<source>Summary</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758})</extracomment>
<translation>Shrnutí</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="87"/>
<source>Description</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3})</extracomment>
<translation>Popis</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="90"/>
<source>Developer</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5})</extracomment>
<translation>Vývojář</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="72"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="75"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="78"/>
<source>Channel</source>
<extracomment>The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Kanál</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="129"/>
<source>Set channel</source>
<extracomment>The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Nastavit kanál</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="189"/>
<source>Version changed</source>
<extracomment>The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Verze změněna</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="186"/>
<source>Version</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586})
----------
The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Verze</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="123"/>
<source>Revision changed</source>
<extracomment>The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revize změněna</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="117"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="120"/>
<source>Revision</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb})
----------
The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revize</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="126"/>
<source>Rollback to previous version</source>
<extracomment>The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap</extracomment>
<translation>Rolovat zpět k předchozí verzi</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="138"/>
<source>Start update</source>
<extracomment>The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl</extracomment>
<translation>Spustit aktualizaci</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="171"/>
<source>Update manager</source>
<extracomment>The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a})</extracomment>
<translation>Manager aktualizace</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="180"/>
<source>Update manager available changed</source>
<extracomment>The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Manager aktualizace k dispozici změněno</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="174"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="177"/>
<source>Update manager available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c})
----------
The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Manager aktualizace k dispozici</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="153"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="156"/>
<source>System update available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2})
----------
The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Aktualizace systému k dispozici</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="162"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="165"/>
<source>System update running</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c})
----------
The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Aktualizace systému běží</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="132"/>
<source>Snap</source>
<extracomment>The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437})</extracomment>
<translation>Snap</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="168"/>
<source>System update running changed</source>
<extracomment>The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Aktualizace systému běží změněno</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="147"/>
<source>Status changed</source>
<extracomment>The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Status změněn</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="105"/>
<source>Name</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89})</extracomment>
<translation>Název</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="81"/>
<source>Channel changed</source>
<extracomment>The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Kanál změněn</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="84"/>
<source>Check for updates</source>
<extracomment>The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl</extracomment>
<translation>Zkontrolovat aktualizace</translation>
</message>
</context>
</TS>

View File

@ -1,235 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="da">
<context>
<name>Snapd</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="135"/>
<source>Snapd</source>
<extracomment>The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="63"/>
<source>Advanced mode</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea})</extracomment>
<translation>Avanceret modus</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="66"/>
<source>Automatic daily refresh schedule</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec})</extracomment>
<translation>Tidsplan for automatisk daglig opdatering</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="69"/>
<source>Canonical</source>
<extracomment>The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517})</extracomment>
<translation>Fast</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="159"/>
<source>System update available changed</source>
<extracomment>The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Systemopdatering tilgængelig ændret</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="102"/>
<source>Last automatic system update time changed</source>
<extracomment>The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Tidspunkt for sidste automatiske systemopdatering ændret</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="96"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="99"/>
<source>Last automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5})
----------
The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Sidste automatiske systemopdatering</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="114"/>
<source>Next automatic system update time changed</source>
<extracomment>The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Tidspunkt for næste automatiske systemopdatering ændret</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="108"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="111"/>
<source>Next automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914})
----------
The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Næste automatiske systemopdatering</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="141"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="144"/>
<source>Status</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf})
----------
The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Status</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="93"/>
<source>ID</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f})</extracomment>
<translation>id</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="150"/>
<source>Summary</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758})</extracomment>
<translation>Sammenfatning</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="87"/>
<source>Description</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3})</extracomment>
<translation>Beskrivelse</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="90"/>
<source>Developer</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5})</extracomment>
<translation>Udvikler</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="72"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="75"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="78"/>
<source>Channel</source>
<extracomment>The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Kanal</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="129"/>
<source>Set channel</source>
<extracomment>The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Indstil kanal</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="189"/>
<source>Version changed</source>
<extracomment>The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Version ændret</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="186"/>
<source>Version</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586})
----------
The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Version</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="123"/>
<source>Revision changed</source>
<extracomment>The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revision ændret</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="117"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="120"/>
<source>Revision</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb})
----------
The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revision</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="126"/>
<source>Rollback to previous version</source>
<extracomment>The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap</extracomment>
<translation> tilbage til tidligere version</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="138"/>
<source>Start update</source>
<extracomment>The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl</extracomment>
<translation>Start opdatering</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="171"/>
<source>Update manager</source>
<extracomment>The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a})</extracomment>
<translation>Opdateringsstyring</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="180"/>
<source>Update manager available changed</source>
<extracomment>The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Opdateringsstyring tilgængelig ændret</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="174"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="177"/>
<source>Update manager available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c})
----------
The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Opdateringsstyring tilgængelig</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="153"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="156"/>
<source>System update available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2})
----------
The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Systemopdatering tilgængelig</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="162"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="165"/>
<source>System update running</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c})
----------
The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Systemopdatering løber</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="132"/>
<source>Snap</source>
<extracomment>The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437})</extracomment>
<translation>Snap</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="168"/>
<source>System update running changed</source>
<extracomment>The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Systemopdatering løber ændret</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="147"/>
<source>Status changed</source>
<extracomment>The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Status ændret</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="105"/>
<source>Name</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89})</extracomment>
<translation>Navn</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="81"/>
<source>Channel changed</source>
<extracomment>The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Kanal ændret</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="84"/>
<source>Check for updates</source>
<extracomment>The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl</extracomment>
<translation>Tjek for opdateringer</translation>
</message>
</context>
</TS>

View File

@ -1,235 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de">
<context>
<name>Snapd</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="135"/>
<source>Snapd</source>
<extracomment>The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3})</extracomment>
<translation>Snapd</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="63"/>
<source>Advanced mode</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea})</extracomment>
<translation>Erweiterter Modus</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="66"/>
<source>Automatic daily refresh schedule</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec})</extracomment>
<translation>Automatischer täglicher Aktualisierungszeitplan</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="69"/>
<source>Canonical</source>
<extracomment>The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517})</extracomment>
<translation>Canonical</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="159"/>
<source>System update available changed</source>
<extracomment>The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Systemupdate Verfügbarkeit geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="102"/>
<source>Last automatic system update time changed</source>
<extracomment>The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Letztes automatisches Systemupdate geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="96"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="99"/>
<source>Last automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5})
----------
The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Letzte automatische Systemaktualisierung</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="114"/>
<source>Next automatic system update time changed</source>
<extracomment>The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Nächstes automatisches Systemupdate geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="108"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="111"/>
<source>Next automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914})
----------
The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Nächstes automatisches Systemupdate</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="141"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="144"/>
<source>Status</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf})
----------
The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Status</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="93"/>
<source>ID</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f})</extracomment>
<translation>ID</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="150"/>
<source>Summary</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758})</extracomment>
<translation>Zusammenfassung</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="87"/>
<source>Description</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3})</extracomment>
<translation>Beschreibung</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="90"/>
<source>Developer</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5})</extracomment>
<translation>Entwickler</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="72"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="75"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="78"/>
<source>Channel</source>
<extracomment>The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Kanal</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="129"/>
<source>Set channel</source>
<extracomment>The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Setze Kanal</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="189"/>
<source>Version changed</source>
<extracomment>The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Version geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="186"/>
<source>Version</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586})
----------
The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Version</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="123"/>
<source>Revision changed</source>
<extracomment>The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revision geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="117"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="120"/>
<source>Revision</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb})
----------
The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revision</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="126"/>
<source>Rollback to previous version</source>
<extracomment>The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap</extracomment>
<translation>Zurücksetzen auf vorhergehende Version</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="138"/>
<source>Start update</source>
<extracomment>The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl</extracomment>
<translation>Starte Systemupdate</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="171"/>
<source>Update manager</source>
<extracomment>The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a})</extracomment>
<translation>Update Manager</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="180"/>
<source>Update manager available changed</source>
<extracomment>The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Update Manager Verfügbarkeit geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="174"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="177"/>
<source>Update manager available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c})
----------
The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Update-Manager verfügbar</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="153"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="156"/>
<source>System update available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2})
----------
The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Systemupdate verfügbar</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="162"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="165"/>
<source>System update running</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c})
----------
The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Systemaktualisierung läuft</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="132"/>
<source>Snap</source>
<extracomment>The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437})</extracomment>
<translation>Snap</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="168"/>
<source>System update running changed</source>
<extracomment>The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Systemupdate aktiv geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="147"/>
<source>Status changed</source>
<extracomment>The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Status geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="105"/>
<source>Name</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89})</extracomment>
<translation>Name</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="81"/>
<source>Channel changed</source>
<extracomment>The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Kanal geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="84"/>
<source>Check for updates</source>
<extracomment>The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl</extracomment>
<translation>Nach Aktualisierungen suchen</translation>
</message>
</context>
</TS>

View File

@ -1,235 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
<context>
<name>Snapd</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="135"/>
<source>Snapd</source>
<extracomment>The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="63"/>
<source>Advanced mode</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="66"/>
<source>Automatic daily refresh schedule</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="69"/>
<source>Canonical</source>
<extracomment>The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="159"/>
<source>System update available changed</source>
<extracomment>The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="102"/>
<source>Last automatic system update time changed</source>
<extracomment>The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="96"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="99"/>
<source>Last automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5})
----------
The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="114"/>
<source>Next automatic system update time changed</source>
<extracomment>The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="108"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="111"/>
<source>Next automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914})
----------
The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="141"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="144"/>
<source>Status</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf})
----------
The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="93"/>
<source>ID</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="150"/>
<source>Summary</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="87"/>
<source>Description</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="90"/>
<source>Developer</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="72"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="75"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="78"/>
<source>Channel</source>
<extracomment>The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="129"/>
<source>Set channel</source>
<extracomment>The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="189"/>
<source>Version changed</source>
<extracomment>The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="186"/>
<source>Version</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586})
----------
The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="123"/>
<source>Revision changed</source>
<extracomment>The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="117"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="120"/>
<source>Revision</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb})
----------
The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="126"/>
<source>Rollback to previous version</source>
<extracomment>The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="138"/>
<source>Start update</source>
<extracomment>The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="171"/>
<source>Update manager</source>
<extracomment>The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="180"/>
<source>Update manager available changed</source>
<extracomment>The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="174"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="177"/>
<source>Update manager available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c})
----------
The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="153"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="156"/>
<source>System update available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2})
----------
The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="162"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="165"/>
<source>System update running</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c})
----------
The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="132"/>
<source>Snap</source>
<extracomment>The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="168"/>
<source>System update running changed</source>
<extracomment>The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="147"/>
<source>Status changed</source>
<extracomment>The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="105"/>
<source>Name</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="81"/>
<source>Channel changed</source>
<extracomment>The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="84"/>
<source>Check for updates</source>
<extracomment>The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,235 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="es">
<context>
<name>Snapd</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="135"/>
<source>Snapd</source>
<extracomment>The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="63"/>
<source>Advanced mode</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea})</extracomment>
<translation>Modo avanzado</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="66"/>
<source>Automatic daily refresh schedule</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec})</extracomment>
<translation>Programación de actualización diaria automática</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="69"/>
<source>Canonical</source>
<extracomment>The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517})</extracomment>
<translation>Canónica</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="159"/>
<source>System update available changed</source>
<extracomment>The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Actualización disponible del sistema modificada</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="102"/>
<source>Last automatic system update time changed</source>
<extracomment>The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Última hora de actualización automática del sistema modificada</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="96"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="99"/>
<source>Last automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5})
----------
The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Última actualización automática del sistema</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="114"/>
<source>Next automatic system update time changed</source>
<extracomment>The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Próxima hora de actualización automática del sistema modificada</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="108"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="111"/>
<source>Next automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914})
----------
The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Próxima actualización automática del sistema</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="141"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="144"/>
<source>Status</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf})
----------
The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Estado</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="93"/>
<source>ID</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f})</extracomment>
<translation>Identificación</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="150"/>
<source>Summary</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758})</extracomment>
<translation>Resumen</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="87"/>
<source>Description</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3})</extracomment>
<translation>Descripción</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="90"/>
<source>Developer</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5})</extracomment>
<translation>Desarrollador</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="72"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="75"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="78"/>
<source>Channel</source>
<extracomment>The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Canal</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="129"/>
<source>Set channel</source>
<extracomment>The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Fijar canal</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="189"/>
<source>Version changed</source>
<extracomment>The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Versión modificada</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="186"/>
<source>Version</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586})
----------
The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Versión</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="123"/>
<source>Revision changed</source>
<extracomment>The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revisión modificada</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="117"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="120"/>
<source>Revision</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb})
----------
The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revisión</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="126"/>
<source>Rollback to previous version</source>
<extracomment>The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap</extracomment>
<translation>Retroceso a la versión anterior</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="138"/>
<source>Start update</source>
<extracomment>The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl</extracomment>
<translation>Iniciar actualización</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="171"/>
<source>Update manager</source>
<extracomment>The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a})</extracomment>
<translation>Actualizar gestor</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="180"/>
<source>Update manager available changed</source>
<extracomment>The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Actualización de gestor disponible modificada</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="174"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="177"/>
<source>Update manager available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c})
----------
The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Actualización de gestor disponible</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="153"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="156"/>
<source>System update available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2})
----------
The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Actualización de sistema disponible</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="162"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="165"/>
<source>System update running</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c})
----------
The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Actualización de sistema en funcionamiento</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="132"/>
<source>Snap</source>
<extracomment>The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437})</extracomment>
<translation>Snap</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="168"/>
<source>System update running changed</source>
<extracomment>The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Actualización de sistema en funcionamiento modificada</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="147"/>
<source>Status changed</source>
<extracomment>The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Estado modificado</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="105"/>
<source>Name</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89})</extracomment>
<translation>Nombre</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="81"/>
<source>Channel changed</source>
<extracomment>The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Canal modificado</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="84"/>
<source>Check for updates</source>
<extracomment>The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl</extracomment>
<translation>Buscar actualizaciones</translation>
</message>
</context>
</TS>

View File

@ -1,235 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fr">
<context>
<name>Snapd</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="135"/>
<source>Snapd</source>
<extracomment>The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="63"/>
<source>Advanced mode</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea})</extracomment>
<translation>Mode avancé</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="66"/>
<source>Automatic daily refresh schedule</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec})</extracomment>
<translation>Calendrier de rafraîchissement quotidien automatique</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="69"/>
<source>Canonical</source>
<extracomment>The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517})</extracomment>
<translation>Canonique</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="159"/>
<source>System update available changed</source>
<extracomment>The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Disponibilité de mise à jour du système modifiée</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="102"/>
<source>Last automatic system update time changed</source>
<extracomment>The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Dernière heure de mise à jour automatique du système modifiée</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="96"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="99"/>
<source>Last automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5})
----------
The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Dernière mise à jour automatique du système</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="114"/>
<source>Next automatic system update time changed</source>
<extracomment>The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Prochaine heure de mise à jour automatique du système modifiée</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="108"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="111"/>
<source>Next automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914})
----------
The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Prochaine mise à jour automatique du système</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="141"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="144"/>
<source>Status</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf})
----------
The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Statut</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="93"/>
<source>ID</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f})</extracomment>
<translation>ID</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="150"/>
<source>Summary</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758})</extracomment>
<translation>Récapitulatif</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="87"/>
<source>Description</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3})</extracomment>
<translation>Description</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="90"/>
<source>Developer</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5})</extracomment>
<translation>Développeur</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="72"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="75"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="78"/>
<source>Channel</source>
<extracomment>The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Canal</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="129"/>
<source>Set channel</source>
<extracomment>The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Définir la chaîne</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="189"/>
<source>Version changed</source>
<extracomment>The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Version modifiée</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="186"/>
<source>Version</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586})
----------
The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Version</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="123"/>
<source>Revision changed</source>
<extracomment>The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Révision modifiée</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="117"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="120"/>
<source>Revision</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb})
----------
The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Révision</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="126"/>
<source>Rollback to previous version</source>
<extracomment>The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap</extracomment>
<translation>Retour à la version précédente</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="138"/>
<source>Start update</source>
<extracomment>The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl</extracomment>
<translation>Démarrer la mise a jour</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="171"/>
<source>Update manager</source>
<extracomment>The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a})</extracomment>
<translation>Gestionnaire de mise à jour</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="180"/>
<source>Update manager available changed</source>
<extracomment>The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Disponibilité du gestionnaire de mise à jour modifiée</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="174"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="177"/>
<source>Update manager available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c})
----------
The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Gestionnaire de mise à jour disponible</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="153"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="156"/>
<source>System update available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2})
----------
The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Mise à jour du système disponible</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="162"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="165"/>
<source>System update running</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c})
----------
The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Mise à jour du système en cours</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="132"/>
<source>Snap</source>
<extracomment>The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437})</extracomment>
<translation>Snap</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="168"/>
<source>System update running changed</source>
<extracomment>The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Le cours de la mise à jour du système a changé</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="147"/>
<source>Status changed</source>
<extracomment>The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Statut modifié</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="105"/>
<source>Name</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89})</extracomment>
<translation>Nom</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="81"/>
<source>Channel changed</source>
<extracomment>The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Canal modifié</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="84"/>
<source>Check for updates</source>
<extracomment>The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl</extracomment>
<translation>Vérifier les mises à jour</translation>
</message>
</context>
</TS>

View File

@ -1,235 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="it">
<context>
<name>Snapd</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="135"/>
<source>Snapd</source>
<extracomment>The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="63"/>
<source>Advanced mode</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea})</extracomment>
<translation>Modalità avanzata</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="66"/>
<source>Automatic daily refresh schedule</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec})</extracomment>
<translation>Programma di aggiornamento giornaliero automatico</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="69"/>
<source>Canonical</source>
<extracomment>The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517})</extracomment>
<translation>Canonico</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="159"/>
<source>System update available changed</source>
<extracomment>The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Aggiornamento del sistema disponibile modificato</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="102"/>
<source>Last automatic system update time changed</source>
<extracomment>The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Ora dell&apos;ultimo aggiornamento automatico del sistema cambiato</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="96"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="99"/>
<source>Last automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5})
----------
The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Ultimo aggiornamento automatico del sistema</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="114"/>
<source>Next automatic system update time changed</source>
<extracomment>The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Ora del prossimo aggiornamento automatico del sistema cambiato</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="108"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="111"/>
<source>Next automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914})
----------
The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Prossimo aggiornamento automatico del sistema</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="141"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="144"/>
<source>Status</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf})
----------
The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Stato</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="93"/>
<source>ID</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f})</extracomment>
<translation>ID</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="150"/>
<source>Summary</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758})</extracomment>
<translation>Sommario</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="87"/>
<source>Description</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3})</extracomment>
<translation>Descrizione</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="90"/>
<source>Developer</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5})</extracomment>
<translation>Sviluppatore</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="72"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="75"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="78"/>
<source>Channel</source>
<extracomment>The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Canale</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="129"/>
<source>Set channel</source>
<extracomment>The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Imposta canale</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="189"/>
<source>Version changed</source>
<extracomment>The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Versione modificata</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="186"/>
<source>Version</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586})
----------
The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Versione</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="123"/>
<source>Revision changed</source>
<extracomment>The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revisione modificata</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="117"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="120"/>
<source>Revision</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb})
----------
The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revisione</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="126"/>
<source>Rollback to previous version</source>
<extracomment>The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap</extracomment>
<translation>Ripristino della versione precedente</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="138"/>
<source>Start update</source>
<extracomment>The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl</extracomment>
<translation>Inizia aggiornamento</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="171"/>
<source>Update manager</source>
<extracomment>The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a})</extracomment>
<translation>Gestione aggiornamento</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="180"/>
<source>Update manager available changed</source>
<extracomment>The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Gestione aggiornamento disponibile cambiato</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="174"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="177"/>
<source>Update manager available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c})
----------
The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Gestione aggiornamento disponibile</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="153"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="156"/>
<source>System update available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2})
----------
The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Aggiornamento del sistema disponibile</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="162"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="165"/>
<source>System update running</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c})
----------
The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Esecuzione aggiornamento del sistema</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="132"/>
<source>Snap</source>
<extracomment>The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437})</extracomment>
<translation>Snap</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="168"/>
<source>System update running changed</source>
<extracomment>The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Esecuzione aggiornamento del sistema modificata</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="147"/>
<source>Status changed</source>
<extracomment>The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Stato modificato</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="105"/>
<source>Name</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89})</extracomment>
<translation>Nome</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="81"/>
<source>Channel changed</source>
<extracomment>The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Canale modificato</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="84"/>
<source>Check for updates</source>
<extracomment>The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl</extracomment>
<translation>Verifica aggiornamenti</translation>
</message>
</context>
</TS>

View File

@ -1,235 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="nl">
<context>
<name>Snapd</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="135"/>
<source>Snapd</source>
<extracomment>The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="63"/>
<source>Advanced mode</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea})</extracomment>
<translation>Geavanceerde modus</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="66"/>
<source>Automatic daily refresh schedule</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec})</extracomment>
<translation>Automatisch dagelijks vernieuwingsschema</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="69"/>
<source>Canonical</source>
<extracomment>The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517})</extracomment>
<translation>Canonical</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="159"/>
<source>System update available changed</source>
<extracomment>The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Beschikbaarheid systeemupdate</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="102"/>
<source>Last automatic system update time changed</source>
<extracomment>The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Laatste tijd automatische systeemupdate bijgewerkt</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="96"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="99"/>
<source>Last automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5})
----------
The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Laatste automatische systeemupdate</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="114"/>
<source>Next automatic system update time changed</source>
<extracomment>The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Volgende tijd automatische systeemupdate bijgewerkt</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="108"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="111"/>
<source>Next automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914})
----------
The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Volgende automatische systeemupdate</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="141"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="144"/>
<source>Status</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf})
----------
The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Status</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="93"/>
<source>ID</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f})</extracomment>
<translation>ID</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="150"/>
<source>Summary</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758})</extracomment>
<translation>Samenvatting</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="87"/>
<source>Description</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3})</extracomment>
<translation>Beschrijving</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="90"/>
<source>Developer</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5})</extracomment>
<translation>Ontwikkelaar</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="72"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="75"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="78"/>
<source>Channel</source>
<extracomment>The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Kanaal</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="129"/>
<source>Set channel</source>
<extracomment>The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Kanaal instellen</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="189"/>
<source>Version changed</source>
<extracomment>The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Versie gewijzigd</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="186"/>
<source>Version</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586})
----------
The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Versie</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="123"/>
<source>Revision changed</source>
<extracomment>The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revisie gewijzigd</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="117"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="120"/>
<source>Revision</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb})
----------
The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revisie</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="126"/>
<source>Rollback to previous version</source>
<extracomment>The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap</extracomment>
<translation>Terugdraaien naar vorige versie</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="138"/>
<source>Start update</source>
<extracomment>The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl</extracomment>
<translation>Update beginnen</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="171"/>
<source>Update manager</source>
<extracomment>The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a})</extracomment>
<translation>Update-manager</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="180"/>
<source>Update manager available changed</source>
<extracomment>The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Update-manager beschikbaar gewijzigd</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="174"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="177"/>
<source>Update manager available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c})
----------
The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Update-manager beschikbaar</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="153"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="156"/>
<source>System update available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2})
----------
The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Systeemupdate beschikbaar</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="162"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="165"/>
<source>System update running</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c})
----------
The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Systeemupdate wordt uitgevoerd</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="132"/>
<source>Snap</source>
<extracomment>The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437})</extracomment>
<translation>Snap</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="168"/>
<source>System update running changed</source>
<extracomment>The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Systeemupdate wordt uitgevoerd gewijzigd</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="147"/>
<source>Status changed</source>
<extracomment>The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Status gewijzigd</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="105"/>
<source>Name</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89})</extracomment>
<translation>Naam</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="81"/>
<source>Channel changed</source>
<extracomment>The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Kanaal gewijzigd</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="84"/>
<source>Check for updates</source>
<extracomment>The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl</extracomment>
<translation>Controleren op updates</translation>
</message>
</context>
</TS>

View File

@ -1,235 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="pt">
<context>
<name>Snapd</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="135"/>
<source>Snapd</source>
<extracomment>The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="63"/>
<source>Advanced mode</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea})</extracomment>
<translation>Modo avançado</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="66"/>
<source>Automatic daily refresh schedule</source>
<extracomment>The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec})</extracomment>
<translation>Agenda de atualização automática diária</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="69"/>
<source>Canonical</source>
<extracomment>The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517})</extracomment>
<translation>Canónico</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="159"/>
<source>System update available changed</source>
<extracomment>The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Alterada atualização do sistema disponível</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="102"/>
<source>Last automatic system update time changed</source>
<extracomment>The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Alterado último tempo de atualização automática do sistema</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="96"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="99"/>
<source>Last automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5})
----------
The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl</extracomment>
<translation>Última atualização automática do sistema</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="114"/>
<source>Next automatic system update time changed</source>
<extracomment>The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Alterada próxima atualização automática do sistema</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="108"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="111"/>
<source>Next automatic system update</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914})
----------
The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl</extracomment>
<translation>Próxima atualização automática do sistema</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="141"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="144"/>
<source>Status</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf})
----------
The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Estado</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="93"/>
<source>ID</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f})</extracomment>
<translation>ID</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="150"/>
<source>Summary</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758})</extracomment>
<translation>Resumo</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="87"/>
<source>Description</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3})</extracomment>
<translation>Descrição</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="90"/>
<source>Developer</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5})</extracomment>
<translation>Desenvolvedor</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="72"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="75"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="78"/>
<source>Channel</source>
<extracomment>The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff})
----------
The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Canal</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="129"/>
<source>Set channel</source>
<extracomment>The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Configurar canal</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="189"/>
<source>Version changed</source>
<extracomment>The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Versão alterada</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="186"/>
<source>Version</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586})
----------
The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap</extracomment>
<translation>Versão</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="123"/>
<source>Revision changed</source>
<extracomment>The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revisão alterada</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="117"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="120"/>
<source>Revision</source>
<extracomment>The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb})
----------
The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap</extracomment>
<translation>Revisão</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="126"/>
<source>Rollback to previous version</source>
<extracomment>The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap</extracomment>
<translation>Retroceder para versão anterior</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="138"/>
<source>Start update</source>
<extracomment>The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl</extracomment>
<translation>Iniciar atualização</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="171"/>
<source>Update manager</source>
<extracomment>The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a})</extracomment>
<translation>Gestor de atualizações</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="180"/>
<source>Update manager available changed</source>
<extracomment>The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Gestor de atualizações</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="174"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="177"/>
<source>Update manager available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c})
----------
The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl</extracomment>
<translation>Disponível gestor de atualizações</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="153"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="156"/>
<source>System update available</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2})
----------
The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl</extracomment>
<translation>Disponível atualização do sistema</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="162"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="165"/>
<source>System update running</source>
<extracomment>The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c})
----------
The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Atualização do sistema em curso</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="132"/>
<source>Snap</source>
<extracomment>The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437})</extracomment>
<translation>Snap</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="168"/>
<source>System update running changed</source>
<extracomment>The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl</extracomment>
<translation>Alterada atualização do sistema em curso</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="147"/>
<source>Status changed</source>
<extracomment>The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl</extracomment>
<translation>Estado alterado</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="105"/>
<source>Name</source>
<extracomment>The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89})</extracomment>
<translation>Nome</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="81"/>
<source>Channel changed</source>
<extracomment>The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap</extracomment>
<translation>Canal alterado</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/snapd/plugininfo.h" line="84"/>
<source>Check for updates</source>
<extracomment>The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl</extracomment>
<translation>Verificar atualizações</translation>
</message>
</context>
</TS>