From a3e46a46d6f7454a6100149e9880b614202dca83 Mon Sep 17 00:00:00 2001 From: Iceyer Date: Thu, 11 Jan 2018 15:27:45 +0800 Subject: [PATCH] feat: support new dman interface Change-Id: Ide7a41caa426dc70549024137b6528f1b1bfd61e --- src/widgets/dapplication.cpp | 38 ++++++++++++++---------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/src/widgets/dapplication.cpp b/src/widgets/dapplication.cpp index 8cbcc8e45..7db1e3910 100644 --- a/src/widgets/dapplication.cpp +++ b/src/widgets/dapplication.cpp @@ -48,6 +48,7 @@ #ifdef Q_OS_LINUX #include +#include #include "startupnotificationmonitor.h" #endif @@ -255,11 +256,15 @@ bool DApplicationPrivate::loadTranslator(QList translateDirs, const QS bool DApplicationPrivate::isUserManualExists() { - const QString appName = qApp->applicationName(); - bool dmanAppExists = QFile::exists("/usr/bin/dman"); - bool dmanDataExists = QFile::exists("/usr/share/dman/" + appName) || - QFile::exists("/app/share/dman/" + appName); - return dmanAppExists && dmanDataExists; +#ifdef Q_OS_LINUX + QDBusInterface manualSearch("com.deepin.Manual.Search", + "/com/deepin/Manual/Search", + "com.deepin.Manual.Search"); + QDBusReply reply = manualSearch.call("ManualExists", qApp->applicationName()); + return reply.value(); +#else + return false; +#endif } /** @@ -580,25 +585,12 @@ void DApplication::setAboutDialog(DAboutDialog *aboutDialog) */ void DApplication::handleHelpAction() { - QString appid = applicationName(); -#ifdef DTK_DMAN_PORTAL - if (!qgetenv("FLATPAK_APPID").isEmpty()) { - appid = qgetenv("FLATPAK_APPID"); - } - - QDBusInterface dmanInterface("com.deepin.dman", - "/com/deepin/dman", - "com.deepin.dman"); - if (dmanInterface.isValid()) { - auto reply = dmanInterface.call("ShowManual", appid); - if (dmanInterface.lastError().isValid()) { - qCritical() << "failed call ShowManual" << appid << dmanInterface.lastError(); - } - } else { - qCritical() << "can not create dman dbus interface"; - } +#ifdef Q_OS_LINUX + QDBusInterface manual("com.deepin.Manual.Open", + "/com/deepin/Manual/Open", + "com.deepin.Manual.Open"); + manual.asyncCall("ShowManual", qApp->applicationName()); #else - QProcess::startDetached("dman", QStringList() << appid); #endif }