From 4f004f85c7e242aa8eb72e893fd0002bbd173178 Mon Sep 17 00:00:00 2001 From: Ye ShanShan Date: Mon, 25 Mar 2024 19:09:24 +0800 Subject: [PATCH] refact: launching app by dde-am tool Launching app by dde-am tools instead of calling dbus directly. --- .../dock/taskmanager/desktopfileamparser.cpp | 20 +++++++++++++++++-- panels/dock/taskmanager/desktopfileamparser.h | 1 + 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/panels/dock/taskmanager/desktopfileamparser.cpp b/panels/dock/taskmanager/desktopfileamparser.cpp index 892166835..317f9c8c0 100644 --- a/panels/dock/taskmanager/desktopfileamparser.cpp +++ b/panels/dock/taskmanager/desktopfileamparser.cpp @@ -154,12 +154,12 @@ QString DesktopFileAMParser::type() void DesktopFileAMParser::launch() { - m_applicationInterface->Launch(QString(), QStringList(), QVariantMap()); + return launchByAMTool(); } void DesktopFileAMParser::launchWithAction(const QString& action) { - m_applicationInterface->Launch(action, QStringList(), QVariantMap()); + return launchByAMTool(action); } void DesktopFileAMParser::requestQuit() @@ -180,6 +180,22 @@ void DesktopFileAMParser::connectToAmDBusSignal(const QString& signalName, const ); } +void DesktopFileAMParser::launchByAMTool(const QString &action) +{ + QProcess process; + const auto path = m_applicationInterface->path(); + process.setProcessChannelMode(QProcess::MergedChannels); + process.start("dde-am", {"--by-user", path}); + if (!process.waitForFinished()) { + qWarning() << "Failed to launch the path:" << path << process.errorString(); + return; + } else if (process.exitCode() != 0) { + qWarning() << "Failed to launch the path:" << path << process.readAll(); + return; + } + qDebug() << "Launch the application path:" << path; +} + void DesktopFileAMParser::updateActions() { m_actions.clear(); diff --git a/panels/dock/taskmanager/desktopfileamparser.h b/panels/dock/taskmanager/desktopfileamparser.h index b7ce529ad..d91ea370c 100644 --- a/panels/dock/taskmanager/desktopfileamparser.h +++ b/panels/dock/taskmanager/desktopfileamparser.h @@ -46,6 +46,7 @@ class DesktopFileAMParser : public DesktopfileAbstractParser private: QString id2dbusPath(const QString& id); void connectToAmDBusSignal(const QString& propertyName, const char* slot); + void launchByAMTool(const QString &action = QString()); private Q_SLOTS: void updateActions();