summaryrefslogtreecommitdiffstats
path: root/src/manager-lib/applicationinterfaceadaptor_dbus.cpp
blob: 975fcc4e8ec62e8608f3f50269d3555e639ed722 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

#include "applicationinterface_adaptor.h"
#include "applicationmanager.h"
#include "application.h"
#include "nativeruntime.h"


QT_USE_NAMESPACE_AM

static inline NativeRuntime *nativeRuntimeFor(ApplicationInterfaceAdaptor *adaptor)
{
    return (adaptor && adaptor->parent()) ? qobject_cast<NativeRuntime *>(adaptor->parent()->parent())
                                          : nullptr;
}

ApplicationInterfaceAdaptor::ApplicationInterfaceAdaptor(QObject *parent)
    : QDBusAbstractAdaptor(parent)
{
    auto *nr = nativeRuntimeFor(this);
    Q_ASSERT(nr);

    connect(ApplicationManager::instance(), &ApplicationManager::memoryLowWarning,
            this, &ApplicationInterfaceAdaptor::memoryLowWarning);
    connect(ApplicationManager::instance(), &ApplicationManager::memoryCriticalWarning,
            this, &ApplicationInterfaceAdaptor::memoryCriticalWarning);
    connect(nr->container(), &AbstractContainer::memoryLowWarning,
            this, &ApplicationInterfaceAdaptor::memoryLowWarning);
    connect(nr->container(), &AbstractContainer::memoryCriticalWarning,
            this, &ApplicationInterfaceAdaptor::memoryCriticalWarning);
    connect(nr, &NativeRuntime::aboutToStop,
            this, &ApplicationInterfaceAdaptor::quit);
}

ApplicationInterfaceAdaptor::~ApplicationInterfaceAdaptor()
{ }

void ApplicationInterfaceAdaptor::finishedInitialization()
{
    if (auto *nr = nativeRuntimeFor(this))
        nr->applicationFinishedInitialization();
}