Revision control

Copy as Markdown

// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qohosdeviceinfo_p.h"
#include <QtCore/private/qohoslogger_p.h>
QT_BEGIN_NAMESPACE
namespace QOhosDeviceInfo {
namespace {
bool isSupportedDeviceType(RecognizedDeviceType recognizedDeviceType)
{
switch (recognizedDeviceType) {
case RecognizedDeviceType::_2in1:
case RecognizedDeviceType::tablet:
case RecognizedDeviceType::phone:
return true;
}
return false;
}
}
static QMap<Type, QVariant> s_deviceInfo = {};
void init(QMap<Type, QVariant> devinfo)
{
s_deviceInfo = std::move(devinfo);
}
QVariant getProperty(Type prop)
{
auto result = s_deviceInfo.value(prop);
if (!result.isValid()) {
qOhosWarning(QtForOhos)
<< "QOhosDeviceInfo::getProperty cannot obtain value from DeviceInfo map";
}
return result;
}
std::optional<RecognizedDeviceType> tryGetRecognizedDeviceType()
{
static const QMap<QString, RecognizedDeviceType> deviceTypeNameMapping = {
{QStringLiteral("2in1"), RecognizedDeviceType::_2in1},
{QStringLiteral("tablet"), RecognizedDeviceType::tablet},
{QStringLiteral("phone"), RecognizedDeviceType::phone},
};
auto deviceTypeName = getProperty(Type::deviceType).toString();
auto deviceTypeIt = deviceTypeNameMapping.constFind(deviceTypeName);
auto deviceType = deviceTypeIt != deviceTypeNameMapping.constEnd()
? std::optional(deviceTypeIt.value())
: std::nullopt;
return deviceType;
}
bool isTablet()
{
return tryGetRecognizedDeviceType() == QOhosDeviceInfo::RecognizedDeviceType::tablet;
}
bool is2in1()
{
return tryGetRecognizedDeviceType() == QOhosDeviceInfo::RecognizedDeviceType::_2in1;
}
bool isPhone()
{
return tryGetRecognizedDeviceType() == RecognizedDeviceType::phone;
}
int sdkApiVersion()
{
return getProperty(Type::sdkApiVersion).toInt();
}
bool isCurrentDeviceSupported()
{
auto deviceType = tryGetRecognizedDeviceType();
return deviceType.has_value() && isSupportedDeviceType(deviceType.value());
}
}
QT_END_NAMESPACE