From 7461ec43d208f426ab458f7cff7078572c7d4ecd Mon Sep 17 00:00:00 2001 From: jokul Date: Sun, 12 Jul 2026 20:55:58 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E5=88=9B=E5=BB=BA=E6=9C=80=E7=AE=80?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 14 +- graphicsdriverapplet.cpp | 301 --------------------------------------- graphicsdriverapplet.h | 65 --------- package/metadata.json | 1 - 4 files changed, 4 insertions(+), 377 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5be9c48..032a0ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,33 +9,27 @@ project(dde-graphics-driver-applet VERSION 1.0.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) -find_package(Qt6 REQUIRED COMPONENTS Widgets DBus Quick) +find_package(Qt6 REQUIRED COMPONENTS Core) find_package(Dtk6 REQUIRED COMPONENTS Core) add_library(org.deepin.ds.graphics-driver SHARED graphicsdriverapplet.h graphicsdriverapplet.cpp - gpuindicator.h - gpuindicator.cpp ) +set_target_properties(org.deepin.ds.graphics-driver PROPERTIES PREFIX "") + target_include_directories(org.deepin.ds.graphics-driver PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /usr/include/dde-shell ) -set_target_properties(org.deepin.ds.graphics-driver PROPERTIES PREFIX "") - target_link_libraries(org.deepin.ds.graphics-driver PRIVATE - Qt6::Widgets - Qt6::DBus - Qt6::Quick + Qt6::Core Dtk6::Core ) # 安装到dde-shell插件目录 install(TARGETS org.deepin.ds.graphics-driver DESTINATION /usr/lib/x86_64-linux-gnu/dde-shell) install(FILES package/metadata.json DESTINATION /usr/share/dde-shell/org.deepin.ds.graphics-driver) -install(FILES package/driverview.qml DESTINATION /usr/share/dde-shell/org.deepin.ds.graphics-driver) diff --git a/graphicsdriverapplet.cpp b/graphicsdriverapplet.cpp index ca4bc0b..7a44b27 100644 --- a/graphicsdriverapplet.cpp +++ b/graphicsdriverapplet.cpp @@ -5,324 +5,23 @@ #include "graphicsdriverapplet.h" #include -#include -#include -#include -#include -#include -#include -#include -#include - -DCORE_USE_NAMESPACE - DS_BEGIN_NAMESPACE -static const QString DBUS_SERVICE = "com.deepin.daemon.GraphicsDriver"; -static const QString DBUS_PATH = "/com/deepin/daemon/GraphicsDriver"; -static const QString DBUS_INTERFACE = "com.deepin.daemon.GraphicsDriver"; - GraphicsDriverApplet::GraphicsDriverApplet(QObject *parent) : DApplet(parent) - , m_dbusInterface(nullptr) - , m_progressTimer(new QTimer(this)) - , m_installProgress(0) - , m_isInstalling(false) - , m_isTestSuccess(false) { } -GraphicsDriverApplet::~GraphicsDriverApplet() -{ - if (m_dbusInterface) { - delete m_dbusInterface; - } -} - bool GraphicsDriverApplet::load() { - initDBusConnection(); - - connect(m_progressTimer, &QTimer::timeout, this, &GraphicsDriverApplet::onPollProgress); - return DApplet::load(); } bool GraphicsDriverApplet::init() { - refreshDeviceInfo(); - return DApplet::init(); } -QString GraphicsDriverApplet::currentDriver() const -{ - return m_currentDriver; -} - -QString GraphicsDriverApplet::newDriver() const -{ - return m_newDriver; -} - -QString GraphicsDriverApplet::deviceInfo() const -{ - return m_deviceInfo; -} - -int GraphicsDriverApplet::installProgress() const -{ - return m_installProgress; -} - -bool GraphicsDriverApplet::isInstalling() const -{ - return m_isInstalling; -} - -bool GraphicsDriverApplet::isTestSuccess() const -{ - return m_isTestSuccess; -} - -QJsonArray GraphicsDriverApplet::availableDrivers() const -{ - return m_availableDrivers; -} - -void GraphicsDriverApplet::refreshDeviceInfo() -{ - if (!m_dbusInterface || !m_dbusInterface->isValid()) { - qWarning() << "DBus interface is not valid"; - return; - } - - QDBusPendingCall call = m_dbusInterface->asyncCall("GetDevice"); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, &GraphicsDriverApplet::onDBusReply); - - QDBusPendingCall currCall = m_dbusInterface->asyncCall("GetCurrDriverName"); - QDBusPendingCallWatcher *currWatcher = new QDBusPendingCallWatcher(currCall, this); - connect(currWatcher, &QDBusPendingCallWatcher::finished, [this](QDBusPendingCallWatcher *call) { - QDBusPendingReply reply = *call; - if (reply.isError()) { - qWarning() << "Failed to get current driver:" << reply.error().message(); - } else { - m_currentDriver = reply.value(); - emit currentDriverChanged(); - } - call->deleteLater(); - }); - - QDBusPendingCall newCall = m_dbusInterface->asyncCall("GetNewDriverName"); - QDBusPendingCallWatcher *newWatcher = new QDBusPendingCallWatcher(newCall, this); - connect(newWatcher, &QDBusPendingCallWatcher::finished, [this](QDBusPendingCallWatcher *call) { - QDBusPendingReply reply = *call; - if (reply.isError()) { - qWarning() << "Failed to get new driver:" << reply.error().message(); - } else { - m_newDriver = reply.value(); - emit newDriverChanged(); - } - call->deleteLater(); - }); -} - -void GraphicsDriverApplet::prepareInstall(const QString &driverName) -{ - if (!m_dbusInterface || !m_dbusInterface->isValid()) { - qWarning() << "DBus interface is not valid"; - emit installFailed("DBus interface is not valid"); - return; - } - - m_pendingInstallDriver = driverName; - - QLocale locale; - QString language = locale.name(); - - QDBusPendingCall call = m_dbusInterface->asyncCall("PrepareInstall", driverName, language); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, [this](QDBusPendingCallWatcher *call) { - QDBusPendingReply<> reply = *call; - if (reply.isError()) { - qWarning() << "Failed to prepare install:" << reply.error().message(); - emit installFailed(reply.error().message()); - } else { - qDebug() << "Prepare install succeeded"; - } - call->deleteLater(); - }); -} - -void GraphicsDriverApplet::testInstall() -{ - if (!m_dbusInterface || !m_dbusInterface->isValid()) { - qWarning() << "DBus interface is not valid"; - emit installFailed("DBus interface is not valid"); - return; - } - - setInstalling(true); - - QDBusPendingCall call = m_dbusInterface->asyncCall("TestInstall"); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, &GraphicsDriverApplet::onDBusReply); -} - -void GraphicsDriverApplet::realInstall() -{ - if (!m_dbusInterface || !m_dbusInterface->isValid()) { - qWarning() << "DBus interface is not valid"; - emit installFailed("DBus interface is not valid"); - return; - } - - QDBusPendingCall call = m_dbusInterface->asyncCall("RealInstall"); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, [this](QDBusPendingCallWatcher *call) { - QDBusPendingReply<> reply = *call; - if (reply.isError()) { - qWarning() << "Failed to real install:" << reply.error().message(); - emit installFailed(reply.error().message()); - setInstalling(false); - } else { - qDebug() << "Real install succeeded"; - emit installSuccess(); - emit requestReboot(); - } - call->deleteLater(); - }); -} - -void GraphicsDriverApplet::cancelInstall() -{ - if (!m_dbusInterface || !m_dbusInterface->isValid()) { - return; - } - - m_dbusInterface->asyncCall("CancelInstall"); - setInstalling(false); -} - -void GraphicsDriverApplet::onDBusReply(QDBusPendingCallWatcher *call) -{ - QDBusPendingReply reply = *call; - if (reply.isError()) { - qWarning() << "DBus call failed:" << reply.error().message(); - } else { - QString result = reply.value(); - qDebug() << "DBus call result:" << result; - parseDeviceInfo(result); - } - call->deleteLater(); -} - -void GraphicsDriverApplet::onReportProgress(const QString &ratio) -{ - bool ok; - int progress = ratio.toInt(&ok); - if (ok) { - m_installProgress = progress; - emit installProgressChanged(); - } -} - -void GraphicsDriverApplet::onCancel() -{ - setInstalling(false); - m_installProgress = 0; - emit installProgressChanged(); -} - -void GraphicsDriverApplet::onPollProgress() -{ - if (!m_dbusInterface || !m_dbusInterface->isValid()) { - return; - } - - QDBusPendingCall call = m_dbusInterface->asyncCall("GetCurrDriverName"); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, [this](QDBusPendingCallWatcher *call) { - QDBusPendingReply reply = *call; - if (!reply.isError()) { - QString newDriver = reply.value(); - if (newDriver != m_currentDriver) { - m_newDriver = newDriver; - emit newDriverChanged(); - } - } - call->deleteLater(); - }); -} - -void GraphicsDriverApplet::initDBusConnection() -{ - QDBusConnection bus = QDBusConnection::sessionBus(); - - if (!bus.isConnected()) { - qWarning() << "Cannot connect to D-Bus session bus"; - return; - } - - m_dbusInterface = new QDBusInterface( - DBUS_SERVICE, - DBUS_PATH, - DBUS_INTERFACE, - bus, - this - ); - - if (!m_dbusInterface->isValid()) { - qWarning() << "DBus interface is not valid:" << m_dbusInterface->lastError().message(); - return; - } - - connect(m_dbusInterface, SIGNAL(ReportProgress(QString)), - this, SLOT(onReportProgress(QString))); - connect(m_dbusInterface, SIGNAL(Cancel()), - this, SLOT(onCancel())); -} - -void GraphicsDriverApplet::updateDeviceInfo() -{ - refreshDeviceInfo(); -} - -void GraphicsDriverApplet::parseDeviceInfo(const QString &jsonStr) -{ - QJsonDocument doc = QJsonDocument::fromJson(jsonStr.toUtf8()); - if (doc.isNull() || !doc.isObject()) { - qWarning() << "Invalid JSON:" << jsonStr; - return; - } - - QJsonObject obj = doc.object(); - m_deviceInfo = jsonStr; - emit deviceInfoChanged(); - - if (obj.contains("drivers")) { - m_availableDrivers = obj["drivers"].toArray(); - emit availableDriversChanged(); - } -} - -void GraphicsDriverApplet::setInstalling(bool installing) -{ - if (m_isInstalling != installing) { - m_isInstalling = installing; - emit isInstallingChanged(); - - if (installing) { - m_progressTimer->start(1000); - } else { - m_progressTimer->stop(); - m_installProgress = 0; - emit installProgressChanged(); - } - } -} - D_APPLET_CLASS(GraphicsDriverApplet) DS_END_NAMESPACE diff --git a/graphicsdriverapplet.h b/graphicsdriverapplet.h index 79e0456..ceb9f14 100644 --- a/graphicsdriverapplet.h +++ b/graphicsdriverapplet.h @@ -6,82 +6,17 @@ #include -#include -#include -#include -#include -#include - DS_BEGIN_NAMESPACE class GraphicsDriverApplet : public DApplet { Q_OBJECT - Q_PROPERTY(QString currentDriver READ currentDriver NOTIFY currentDriverChanged) - Q_PROPERTY(QString newDriver READ newDriver NOTIFY newDriverChanged) - Q_PROPERTY(QString deviceInfo READ deviceInfo NOTIFY deviceInfoChanged) - Q_PROPERTY(int installProgress READ installProgress NOTIFY installProgressChanged) - Q_PROPERTY(bool isInstalling READ isInstalling NOTIFY isInstallingChanged) - Q_PROPERTY(bool isTestSuccess READ isTestSuccess NOTIFY isTestSuccessChanged) - Q_PROPERTY(QJsonArray availableDrivers READ availableDrivers NOTIFY availableDriversChanged) - public: explicit GraphicsDriverApplet(QObject *parent = nullptr); - ~GraphicsDriverApplet(); virtual bool load() override; virtual bool init() override; - - QString currentDriver() const; - QString newDriver() const; - QString deviceInfo() const; - int installProgress() const; - bool isInstalling() const; - bool isTestSuccess() const; - QJsonArray availableDrivers() const; - - Q_INVOKABLE void refreshDeviceInfo(); - Q_INVOKABLE void prepareInstall(const QString &driverName); - Q_INVOKABLE void testInstall(); - Q_INVOKABLE void realInstall(); - Q_INVOKABLE void cancelInstall(); - -signals: - void currentDriverChanged(); - void newDriverChanged(); - void deviceInfoChanged(); - void installProgressChanged(); - void isInstallingChanged(); - void isTestSuccessChanged(); - void availableDriversChanged(); - void installSuccess(); - void installFailed(const QString &error); - void requestReboot(); - -private slots: - void onDBusReply(QDBusPendingCallWatcher *call); - void onReportProgress(const QString &ratio); - void onCancel(); - void onPollProgress(); - -private: - void initDBusConnection(); - void updateDeviceInfo(); - void parseDeviceInfo(const QString &jsonStr); - void setInstalling(bool installing); - - QDBusInterface *m_dbusInterface; - QTimer *m_progressTimer; - - QString m_currentDriver; - QString m_newDriver; - QString m_deviceInfo; - int m_installProgress; - bool m_isInstalling; - bool m_isTestSuccess; - QJsonArray m_availableDrivers; - QString m_pendingInstallDriver; }; DS_END_NAMESPACE diff --git a/package/metadata.json b/package/metadata.json index ece0a8e..122fc45 100644 --- a/package/metadata.json +++ b/package/metadata.json @@ -2,7 +2,6 @@ "Plugin": { "Version": "1.0", "Id": "org.deepin.ds.graphics-driver", - "Url": "driverview.qml", "Category": "DDE" } }