main.cpp 2,4 КБ
Newer Older
OMP Education's avatar
OMP Education включено в состав коммита
1
2
3
// SPDX-FileCopyrightText: 2024 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause

OMP Education's avatar
OMP Education включено в состав коммита
4
#include <auroraapp/auroraapp.h>
OMP Education's avatar
OMP Education включено в состав коммита
5
#include <QtQuick>
OMP Education's avatar
OMP Education включено в состав коммита
6
#include <QString>
OMP Education's avatar
OMP Education включено в состав коммита
7
8
#include <QtDBus/QDBusInterface>
#include <QtDBus/QDBusPendingReply>
OMP Education's avatar
OMP Education включено в состав коммита
9
10
11
#include <algorithm>
#include "versioncontainer.h"

OMP Education's avatar
OMP Education включено в состав коммита
12
13
14
15
const QString DBUS_SERVICE = QStringLiteral("ru.omp.deviceinfo");
const QString DBUS_PATH = QStringLiteral("/ru/omp/deviceinfo/Features");
const QString DBUS_IFACE = QStringLiteral("ru.omp.deviceinfo.Features");

OMP Education's avatar
OMP Education включено в состав коммита
16
17
18
19
20

int main(int argc, char *argv[])
{
    QScopedPointer<QGuiApplication> application(Aurora::Application::application(argc, argv));
    application->setOrganizationName(QStringLiteral("ru.auroraos"));
OMP Education's avatar
OMP Education включено в состав коммита
21
    application->setApplicationName(QStringLiteral("BuildVersion"));
OMP Education's avatar
OMP Education включено в состав коммита
22
23
24
25
26

    QScopedPointer<QQuickView> view(Aurora::Application::createView());
    view->setSource(Aurora::Application::pathTo(QStringLiteral("qml/TargetVersion.qml")));
    view->show();

OMP Education's avatar
OMP Education включено в состав коммита
27
28
29
30
31
32
33
34
35
36
    VersionContainer buildTargetVersion;
    buildTargetVersion.setMajor_version(QString::number(TARGET_MAJOR_VERSION));
    buildTargetVersion.setMinor_version(QString::number(TARGET_MINOR_VERSION));
    buildTargetVersion.setBuild_version(QString::number(TARGET_BUILD_VERSION));
    buildTargetVersion.setRevision_version(QString::number(TARGET_REVISION_VERSION));

    view->engine()->rootContext()->setContextProperty("buildTargetVersion", &buildTargetVersion);

    VersionContainer runTargetVersion;

OMP Education's avatar
OMP Education включено в состав коммита
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
    QDBusInterface *interface = new QDBusInterface(DBUS_SERVICE, DBUS_PATH, DBUS_IFACE,
                                                   QDBusConnection::systemBus(), view.data());

    if (!interface->isValid()) {
        delete interface;
        // before Aurora OS 4.1.0:
        interface = new QDBusInterface(DBUS_SERVICE, DBUS_PATH, DBUS_IFACE,
                                       QDBusConnection::sessionBus(), view.data());
    }
    if (!interface->isValid()) {
        return -1;
    }


    QDBusPendingReply<QString> osInfoReply = interface->asyncCall(QStringLiteral("getOsVersion"));
    const QStringList osInfoParts = osInfoReply.value().split(QStringLiteral(" "));

    if (osInfoParts.empty()) {
        runTargetVersion.setVersion_id("");
        qDebug() << "Cannot find VERSION_ID line";
    } else {
        runTargetVersion.setVersion_id(osInfoParts.last());
OMP Education's avatar
OMP Education включено в состав коммита
59
    }
OMP Education's avatar
OMP Education включено в состав коммита
60

OMP Education's avatar
OMP Education включено в состав коммита
61
62
    view->engine()->rootContext()->setContextProperty("runTargetVersion", &runTargetVersion);

OMP Education's avatar
OMP Education включено в состав коммита
63
64
    return application->exec();
}