// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #include #include class GpuIndicator : public QObject { Q_OBJECT Q_PROPERTY(QString vendor READ vendor NOTIFY infoChanged) Q_PROPERTY(QString model READ model NOTIFY infoChanged) Q_PROPERTY(QString driverVersion READ driverVersion NOTIFY infoChanged) Q_PROPERTY(QString driverStatus READ driverStatus NOTIFY infoChanged) Q_PROPERTY(QString icon READ icon NOTIFY infoChanged) Q_PROPERTY(bool isNvidia READ isNvidia NOTIFY infoChanged) Q_PROPERTY(bool isAmd READ isAmd NOTIFY infoChanged) Q_PROPERTY(bool isIntel READ isIntel NOTIFY infoChanged) public: explicit GpuIndicator(QObject *parent = nullptr); ~GpuIndicator(); QString vendor() const; QString model() const; QString driverVersion() const; QString driverStatus() const; QString icon() const; bool isNvidia() const; bool isAmd() const; bool isIntel() const; Q_INVOKABLE void updateFromJson(const QJsonObject &json); Q_INVOKABLE void updateFromDeviceInfo(const QString &jsonStr); signals: void infoChanged(); private: void parseDeviceInfo(const QJsonObject &obj); QString determineIcon() const; QString m_vendor; QString m_model; QString m_driverVersion; QString m_driverStatus; };