// Copyright (C) 2021 The Qt Company Ltd. // Copyright (C) 2019 Luxoft Sweden AB // Copyright (C) 2018 Pelagicore AG // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include "dbuscontextadaptor.h" #include "windowmanager.h" #include "exception.h" #include "windowmanager_adaptor.h" #include "adaptorchecks_dbus.h" //NOTE: The header for this class is autogenerated from the XML interface definition. // We are NOT using the generated cpp, but instead implement the adaptor manually. QT_USE_NAMESPACE_AM using namespace QT_PREPEND_NAMESPACE_AM(DBusAdaptorChecks); WindowManagerAdaptor::WindowManagerAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent) { connect(WindowManager::instance(), &WindowManager::countChanged, this, &WindowManagerAdaptor::countChanged); connect(WindowManager::instance(), &WindowManager::slowAnimationsChanged, this, &WindowManagerAdaptor::slowAnimationsChanged); } WindowManagerAdaptor::~WindowManagerAdaptor() { } bool WindowManagerAdaptor::allowUnknownUiClients() const { return WindowManager::instance()->allowUnknownUiClients(); } int WindowManagerAdaptor::count() const { return WindowManager::instance()->count(); } bool WindowManagerAdaptor::runningOnDesktop() const { return WindowManager::instance()->isRunningOnDesktop(); } bool WindowManagerAdaptor::slowAnimations() const { return WindowManager::instance()->slowAnimations(); } void WindowManagerAdaptor::setSlowAnimations(bool slow) { WindowManager::instance()->setSlowAnimations(slow); } bool WindowManagerAdaptor::makeScreenshot(const QString &filename, const QString &selector) { try { checkDBusAccess(); // selector := "appId[property=value]:screen" with all 3 parts being optional // an empty appId means all apps qsizetype propertyIndex = selector.indexOf(u'['); qsizetype screenIndex = selector.lastIndexOf(u':'); QString appId = (propertyIndex > 0) ? selector.left(propertyIndex) : ((screenIndex > 0) ? selector.left(screenIndex) : selector); if (!appId.isEmpty()) checkApplicationAccess(appId); else checkDevelopmentModeSystem(); return WindowManager::instance()->makeScreenshot(filename, selector); } catchExceptionAsDBusError({}) }