diff --git a/dbus/org.deepin.dde.Application1.Manager.xml b/dbus/org.deepin.dde.Application1.Manager.xml
index eac83e9..f6b7ded 100644
--- a/dbus/org.deepin.dde.Application1.Manager.xml
+++ b/dbus/org.deepin.dde.Application1.Manager.xml
@@ -27,6 +27,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/modules/startmanager/startmanager.cpp b/src/modules/startmanager/startmanager.cpp
index bc44ae8..04d30ac 100644
--- a/src/modules/startmanager/startmanager.cpp
+++ b/src/modules/startmanager/startmanager.cpp
@@ -117,7 +117,7 @@ bool StartManager::launchApp(const QString &desktopFile)
bool StartManager::launchApp(QString desktopFile, uint32_t timestamp, QStringList files)
{
- return doLaunchAppWithOptions(desktopFile, timestamp, files, QMap());
+ return doLaunchAppWithOptions(desktopFile, timestamp, files, QVariantMap());
}
bool StartManager::launchAppAction(QString desktopFile, QString actionSection, uint32_t timestamp)
@@ -153,7 +153,7 @@ bool StartManager::launchAppAction(QString desktopFile, QString actionSection, u
return true;
}
-bool StartManager::launchAppWithOptions(QString desktopFile, uint32_t timestamp, QStringList files, QMap options)
+bool StartManager::launchAppWithOptions(QString desktopFile, uint32_t timestamp, QStringList files, QVariantMap options)
{
return doLaunchAppWithOptions(desktopFile, timestamp, files, options);
}
@@ -350,7 +350,7 @@ bool StartManager::doLaunchAppWithOptions(const QString &desktopFile)
return true;
}
-bool StartManager::doLaunchAppWithOptions(QString desktopFile, uint32_t timestamp, QStringList files, QMap options)
+bool StartManager::doLaunchAppWithOptions(QString desktopFile, uint32_t timestamp, QStringList files, QVariantMap options)
{
// launchApp
DesktopInfo info(desktopFile.toStdString());
@@ -360,11 +360,11 @@ bool StartManager::doLaunchAppWithOptions(QString desktopFile, uint32_t timestam
}
if (options.find("path") != options.end()) {
- info.getKeyFile()->setKey(MainSection, KeyPath, options["path"].toStdString());
+ info.getKeyFile()->setKey(MainSection, KeyPath, options["path"].toString().toStdString());
}
if (options.find("desktop-override-exec") != options.end()) {
- info.setDesktopOverrideExec(options["desktop-override-exec"].toStdString());
+ info.setDesktopOverrideExec(options["desktop-override-exec"].toString().toStdString());
}
if (info.getCommandLine().empty()) {
diff --git a/src/modules/startmanager/startmanager.h b/src/modules/startmanager/startmanager.h
index fb4178e..cb50ef3 100644
--- a/src/modules/startmanager/startmanager.h
+++ b/src/modules/startmanager/startmanager.h
@@ -46,7 +46,7 @@ public:
bool launchApp(const QString &desktopFile);
bool launchApp(QString desktopFile, uint32_t timestamp, QStringList files);
bool launchAppAction(QString desktopFile, QString actionSection, uint32_t timestamp);
- bool launchAppWithOptions(QString desktopFile, uint32_t timestamp, QStringList files, QMap options);
+ bool launchAppWithOptions(QString desktopFile, uint32_t timestamp, QStringList files, QVariantMap options);
bool runCommand(QString exe, QStringList args);
bool runCommandWithOptions(QString exe, QStringList args, QMap options);
@@ -59,7 +59,7 @@ public Q_SLOTS:
private:
bool setAutostart(const QString &fileName, const bool value);
bool doLaunchAppWithOptions(const QString &desktopFile);
- bool doLaunchAppWithOptions(QString desktopFile, uint32_t timestamp, QStringList files, QMap options);
+ bool doLaunchAppWithOptions(QString desktopFile, uint32_t timestamp, QStringList files, QVariantMap options);
bool launch(DesktopInfo *info, QString cmdLine, uint32_t timestamp, QStringList files);
bool doRunCommandWithOptions(QString exe, QStringList args, QMap options);
void waitCmd(DesktopInfo *info, QProcess *process, QString cmdName);
diff --git a/src/service/impl/application_manager.cpp b/src/service/impl/application_manager.cpp
index c128949..f7203df 100644
--- a/src/service/impl/application_manager.cpp
+++ b/src/service/impl/application_manager.cpp
@@ -384,7 +384,7 @@ void ApplicationManager::LaunchAppAction(const QString &desktopFile, const QStri
}
}
-void ApplicationManager::LaunchAppWithOptions(QString desktopFile, uint32_t timestamp, QStringList files, QMap options)
+void ApplicationManager::LaunchAppWithOptions(const QString &desktopFile, uint32_t timestamp, const QStringList &files, QVariantMap options)
{
Q_D(ApplicationManager);
if (!d->checkDMsgUid()) {
@@ -403,6 +403,25 @@ void ApplicationManager::LaunchAppWithOptions(QString desktopFile, uint32_t time
}
}
+void ApplicationManager::RunCommand(const QString &exe, const QStringList &args)
+{
+ Q_D(ApplicationManager);
+ if (!d->checkDMsgUid()) {
+ if (calledFromDBus())
+ sendErrorReply(QDBusError::Failed, "The call failed");
+
+ qWarning() << "check msg failed...";
+ return;
+ }
+
+ if (!d->startManager->runCommand(exe, args)) {
+ if (calledFromDBus())
+ sendErrorReply(QDBusError::InvalidArgs, "invalid arguments");
+
+ qWarning() << "invalid arguments";
+ }
+}
+
void ApplicationManager::RunCommandWithOptions(QString exe, QStringList args, QMap options)
{
Q_D(ApplicationManager);
diff --git a/src/service/impl/application_manager.h b/src/service/impl/application_manager.h
index 2abae21..54f9ba4 100644
--- a/src/service/impl/application_manager.h
+++ b/src/service/impl/application_manager.h
@@ -74,6 +74,8 @@ public Q_SLOTS:
void Launch(const QString &desktopFile, bool withMsgCheck = true);
void LaunchApp(const QString &desktopFile, uint32_t timestamp, const QStringList &files, bool withMsgCheck = true);
void LaunchAppAction(const QString &desktopFile, const QString &action, uint32_t timestamp, bool withMsgCheck = true);
+ void LaunchAppWithOptions(const QString &desktopFile, uint32_t timestamp, const QStringList &files, QVariantMap options);
+ void RunCommand(const QString &exe, const QStringList &args);
protected:
ApplicationManager(QObject *parent = nullptr);
@@ -83,7 +85,6 @@ protected:
QList list() const;
QDBusObjectPath GetInformation(const QString &id);
QList GetInstances(const QString &id);
- void LaunchAppWithOptions(QString desktopFile, uint32_t timestamp, QStringList files, QMap options);
void RunCommandWithOptions(QString exe, QStringList args, QMap options);
bool IsProcessExist(uint32_t pid);
};