summaryrefslogtreecommitdiff
path: root/src/dbus-lib/packagemanagerdbuscontextadaptor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/dbus-lib/packagemanagerdbuscontextadaptor.cpp')
-rw-r--r--src/dbus-lib/packagemanagerdbuscontextadaptor.cpp210
1 files changed, 210 insertions, 0 deletions
diff --git a/src/dbus-lib/packagemanagerdbuscontextadaptor.cpp b/src/dbus-lib/packagemanagerdbuscontextadaptor.cpp
new file mode 100644
index 00000000..b423389c
--- /dev/null
+++ b/src/dbus-lib/packagemanagerdbuscontextadaptor.cpp
@@ -0,0 +1,210 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 Luxoft Sweden AB
+** Copyright (C) 2018 Pelagicore AG
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Application Manager.
+**
+** $QT_BEGIN_LICENSE:LGPL-QTAS$
+** Commercial License Usage
+** Licensees holding valid commercial Qt Automotive Suite licenses may use
+** this file in accordance with the commercial license agreement provided
+** with the Software or, alternatively, in accordance with the terms
+** contained in a written agreement between you and The Qt Company. For
+** licensing terms and conditions see https://www.qt.io/terms-conditions.
+** For further information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+** SPDX-License-Identifier: LGPL-3.0
+**
+****************************************************************************/
+
+#include "packagemanagerdbuscontextadaptor.h"
+#include "packagemanager.h"
+#include "io.qt.packagemanager_adaptor.h"
+#include "dbuspolicy.h"
+#include "exception.h"
+#include "logging.h"
+
+
+QT_BEGIN_NAMESPACE_AM
+
+static QString taskStateToString(AsynchronousTask::TaskState state)
+{
+ const char *cstr = QMetaEnum::fromType<AsynchronousTask::TaskState>().valueToKey(state);
+ return QString::fromUtf8(cstr);
+}
+
+PackageManagerDBusContextAdaptor::PackageManagerDBusContextAdaptor(PackageManager *pm)
+ : AbstractDBusContextAdaptor(pm)
+{
+ m_adaptor = new PackageManagerAdaptor(this);
+}
+
+QT_END_NAMESPACE_AM
+
+/////////////////////////////////////////////////////////////////////////////////////
+
+QT_USE_NAMESPACE_AM
+
+PackageManagerAdaptor::PackageManagerAdaptor(QObject *parent)
+ : QDBusAbstractAdaptor(parent)
+{
+ auto ai = PackageManager::instance();
+
+ connect(ai, &PackageManager::taskBlockingUntilInstallationAcknowledge,
+ this, &PackageManagerAdaptor::taskBlockingUntilInstallationAcknowledge);
+ connect(ai, &PackageManager::taskFailed,
+ this, &PackageManagerAdaptor::taskFailed);
+ connect(ai, &PackageManager::taskFinished,
+ this, &PackageManagerAdaptor::taskFinished);
+ connect(ai, &PackageManager::taskProgressChanged,
+ this, &PackageManagerAdaptor::taskProgressChanged);
+ connect(ai, &PackageManager::taskRequestingInstallationAcknowledge,
+ this, &PackageManagerAdaptor::taskRequestingInstallationAcknowledge);
+ connect(ai, &PackageManager::taskStarted,
+ this, &PackageManagerAdaptor::taskStarted);
+ connect(ai, &PackageManager::taskStateChanged,
+ [this](const QString &taskId, AsynchronousTask::TaskState newState) {
+ emit taskStateChanged(taskId, taskStateToString(newState));
+ });
+}
+
+PackageManagerAdaptor::~PackageManagerAdaptor()
+{ }
+
+bool PackageManagerAdaptor::allowInstallationOfUnsignedPackages() const
+{
+ return PackageManager::instance()->allowInstallationOfUnsignedPackages();
+}
+
+bool PackageManagerAdaptor::applicationUserIdSeparation() const
+{
+ return PackageManager::instance()->isApplicationUserIdSeparationEnabled();
+}
+
+uint PackageManagerAdaptor::commonApplicationGroupId() const
+{
+ return PackageManager::instance()->commonApplicationGroupId();
+}
+
+bool PackageManagerAdaptor::developmentMode() const
+{
+ return PackageManager::instance()->developmentMode();
+}
+
+QDBusVariant PackageManagerAdaptor::installationLocation() const
+{
+ return QDBusVariant(PackageManager::instance()->installationLocation());
+}
+
+QDBusVariant PackageManagerAdaptor::documentLocation() const
+{
+ return QDBusVariant(PackageManager::instance()->documentLocation());
+}
+
+void PackageManagerAdaptor::acknowledgePackageInstallation(const QString &taskId)
+{
+ AM_AUTHENTICATE_DBUS(void)
+ return PackageManager::instance()->acknowledgePackageInstallation(taskId);
+}
+
+bool PackageManagerAdaptor::cancelTask(const QString &taskId)
+{
+ AM_AUTHENTICATE_DBUS(bool)
+ return PackageManager::instance()->cancelTask(taskId);
+}
+
+int PackageManagerAdaptor::compareVersions(const QString &version1, const QString &version2)
+{
+ AM_AUTHENTICATE_DBUS(int)
+ return PackageManager::instance()->compareVersions(version1, version2);
+}
+
+QStringList PackageManagerAdaptor::packageIds()
+{
+ AM_AUTHENTICATE_DBUS(QStringList)
+ return PackageManager::instance()->packageIds();
+}
+
+QVariantMap PackageManagerAdaptor::get(const QString &id)
+{
+ AM_AUTHENTICATE_DBUS(QVariantMap)
+ auto map = PackageManager::instance()->get(id);
+ map.remove(qSL("package")); // cannot marshall QObject *
+ return map;
+}
+
+qlonglong PackageManagerAdaptor::installedPackageSize(const QString &packageId)
+{
+ AM_AUTHENTICATE_DBUS(qlonglong)
+ return PackageManager::instance()->installedPackageSize(packageId);
+}
+
+QVariantMap PackageManagerAdaptor::installedPackageExtraMetaData(const QString &packageId)
+{
+ AM_AUTHENTICATE_DBUS(QVariantMap)
+ return PackageManager::instance()->installedPackageExtraMetaData(packageId);
+}
+
+QVariantMap PackageManagerAdaptor::installedPackageExtraSignedMetaData(const QString &packageId)
+{
+ AM_AUTHENTICATE_DBUS(QVariantMap)
+ return PackageManager::instance()->installedPackageExtraSignedMetaData(packageId);
+}
+
+QString PackageManagerAdaptor::removePackage(const QString &packageId, bool keepDocuments)
+{
+ return removePackage(packageId, keepDocuments, false);
+}
+
+QString PackageManagerAdaptor::removePackage(const QString &packageId, bool keepDocuments, bool force)
+{
+ AM_AUTHENTICATE_DBUS(QString)
+ return PackageManager::instance()->removePackage(packageId, keepDocuments, force);
+}
+
+QString PackageManagerAdaptor::startPackageInstallation(const QString &sourceUrl)
+{
+ AM_AUTHENTICATE_DBUS(QString)
+ return PackageManager::instance()->startPackageInstallation(sourceUrl);
+}
+
+QString PackageManagerAdaptor::taskState(const QString &taskId)
+{
+ AM_AUTHENTICATE_DBUS(QString)
+ return taskStateToString(PackageManager::instance()->taskState(taskId));
+}
+
+QString PackageManagerAdaptor::taskPackageId(const QString &taskId)
+{
+ AM_AUTHENTICATE_DBUS(QString)
+ return PackageManager::instance()->taskPackageId(taskId);
+}
+
+QStringList PackageManagerAdaptor::activeTaskIds()
+{
+ AM_AUTHENTICATE_DBUS(QStringList)
+ return PackageManager::instance()->activeTaskIds();
+}