feat: 任务栏应用启动方式修改为startManager来启动

在dock类的active方法中,调用ApplicationManager类对象的LaunchApp方法来启动应用

Log:
Influence: 从任务栏启动应用
Task: https://pms.uniontech.com/task-view-211667.html
Change-Id: I354b583b15932046a807b33c3d7cb253a59938d7
This commit is contained in:
donghualin 2022-11-29 15:33:53 +08:00
parent c726a91c0f
commit 6354629a82
7 changed files with 24 additions and 17 deletions

View File

@ -29,6 +29,7 @@
#include "x11manager.h" #include "x11manager.h"
#include "windowinfobase.h" #include "windowinfobase.h"
#include "dbusplasmawindow.h" #include "dbusplasmawindow.h"
#include "impl/application_manager.h"
#include "macro.h" #include "macro.h"
@ -39,7 +40,7 @@
#define SETTING DockSettings::instance() #define SETTING DockSettings::instance()
#define XCB XCBUtils::instance() #define XCB XCBUtils::instance()
Dock::Dock(QObject *parent) Dock::Dock(ApplicationManager *applicationManager, QObject *parent)
: SynModule(parent) : SynModule(parent)
, m_entriesSum(0) , m_entriesSum(0)
, m_windowIdentify(new WindowIdentify(this)) , m_windowIdentify(new WindowIdentify(this))
@ -52,6 +53,7 @@ Dock::Dock(QObject *parent)
, m_windowOperateMutex(QMutex(QMutex::NonRecursive)) , m_windowOperateMutex(QMutex(QMutex::NonRecursive))
, m_showRecent(false) , m_showRecent(false)
, m_showMultiWindow(false) , m_showMultiWindow(false)
, m_applicationManager(applicationManager)
{ {
registeModule("dock"); registeModule("dock");
@ -1146,7 +1148,7 @@ void Dock::detachWindow(WindowInfoBase *info)
*/ */
void Dock::launchApp(const QString desktopFile, uint32_t timestamp, QStringList files) void Dock::launchApp(const QString desktopFile, uint32_t timestamp, QStringList files)
{ {
m_dbusHandler->launchApp(desktopFile, timestamp, files); m_applicationManager->LaunchApp(desktopFile, timestamp, files, false);
} }
/** /**
@ -1157,7 +1159,7 @@ void Dock::launchApp(const QString desktopFile, uint32_t timestamp, QStringList
*/ */
void Dock::launchAppAction(const QString desktopFile, QString action, uint32_t timestamp) void Dock::launchAppAction(const QString desktopFile, QString action, uint32_t timestamp)
{ {
m_dbusHandler->launchAppAction(desktopFile, action, timestamp); m_applicationManager->LaunchAppAction(desktopFile, action ,timestamp, false);
} }
/** /**

View File

@ -38,6 +38,7 @@ class WaylandManager;
class X11Manager; class X11Manager;
class WindowInfoK; class WindowInfoK;
class WindowInfoX; class WindowInfoX;
class ApplicationManager;
enum class HideState enum class HideState
{ {
@ -51,7 +52,7 @@ class Dock : public SynModule
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit Dock(QObject *parent = nullptr); explicit Dock(ApplicationManager *applicationManager, QObject *parent = nullptr);
~Dock(); ~Dock();
bool dockEntry(Entry *entry, bool moveToEnd = false); bool dockEntry(Entry *entry, bool moveToEnd = false);
@ -202,6 +203,7 @@ private:
QMutex m_windowOperateMutex; // 窗口合并或拆分锁 QMutex m_windowOperateMutex; // 窗口合并或拆分锁
bool m_showRecent; bool m_showRecent;
bool m_showMultiWindow; bool m_showMultiWindow;
ApplicationManager *m_applicationManager;
}; };
#endif // DOCK_H #endif // DOCK_H

View File

@ -21,14 +21,15 @@
#include "dockmanager.h" #include "dockmanager.h"
#include "dock.h" #include "dock.h"
#include "impl/application_manager.h"
#include <QDBusConnection> #include <QDBusConnection>
#include <QDebug> #include <QDebug>
#include <QDBusError> #include <QDBusError>
DockManager::DockManager(QObject *parent) DockManager::DockManager(ApplicationManager *parent)
: QObject(parent) : QObject(parent)
, m_dock(new Dock(this)) , m_dock(new Dock(parent, this))
{ {
qInfo() << "DockManager"; qInfo() << "DockManager";
m_adaptor = new DBusAdaptorDock(m_dock); m_adaptor = new DBusAdaptorDock(m_dock);

View File

@ -27,13 +27,14 @@
#include <QObject> #include <QObject>
class Dock; class Dock;
class ApplicationManager;
// 任务栏管理类 // 任务栏管理类
class DockManager : public QObject class DockManager : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit DockManager(QObject *parent = nullptr); explicit DockManager(ApplicationManager *parent = nullptr);
~DockManager(); ~DockManager();
private: private:

View File

@ -570,6 +570,7 @@ bool Entry::attachWindow(WindowInfoBase *info)
void Entry::launchApp(uint32_t timestamp) void Entry::launchApp(uint32_t timestamp)
{ {
if (m_app)
m_dock->launchApp(m_app->getFileName(), timestamp, QStringList()); m_dock->launchApp(m_app->getFileName(), timestamp, QStringList());
} }

View File

@ -282,29 +282,29 @@ bool ApplicationManager::IsAutostart(const QString &fileName)
return d->startManager->isAutostart(fileName); return d->startManager->isAutostart(fileName);
} }
void ApplicationManager::Launch(const QString &desktopFile) void ApplicationManager::Launch(const QString &desktopFile, bool withMsgCheck)
{ {
Q_D(ApplicationManager); Q_D(ApplicationManager);
if (!d->checkDMsgUid()) if (withMsgCheck && !d->checkDMsgUid())
return; return;
d->startManager->launchApp(desktopFile); d->startManager->launchApp(desktopFile);
} }
void ApplicationManager::LaunchApp(const QString &desktopFile, uint32_t timestamp, const QStringList &files) void ApplicationManager::LaunchApp(const QString &desktopFile, uint32_t timestamp, const QStringList &files, bool withMsgCheck)
{ {
Q_D(ApplicationManager); Q_D(ApplicationManager);
if (!d->checkDMsgUid()) if (withMsgCheck && !d->checkDMsgUid())
return; return;
d->startManager->launchApp(desktopFile, timestamp, files); d->startManager->launchApp(desktopFile, timestamp, files);
} }
void ApplicationManager::LaunchAppAction(const QString &desktopFile, const QString &action, uint32_t timestamp) void ApplicationManager::LaunchAppAction(const QString &desktopFile, const QString &action, uint32_t timestamp, bool withMsgCheck)
{ {
Q_D(ApplicationManager); Q_D(ApplicationManager);
if (!d->checkDMsgUid()) if (withMsgCheck && !d->checkDMsgUid())
return; return;
d->startManager->launchAppAction(desktopFile, action, timestamp); d->startManager->launchAppAction(desktopFile, action, timestamp);

View File

@ -71,9 +71,9 @@ public Q_SLOTS:
QStringList AutostartList(); QStringList AutostartList();
bool IsAutostart(const QString &fileName); bool IsAutostart(const QString &fileName);
bool RemoveAutostart(const QString &fileName); bool RemoveAutostart(const QString &fileName);
void Launch(const QString &desktopFile); void Launch(const QString &desktopFile, bool withMsgCheck = true);
void LaunchApp(const QString &desktopFile, uint32_t timestamp, const QStringList &files); 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); void LaunchAppAction(const QString &desktopFile, const QString &action, uint32_t timestamp, bool withMsgCheck = true);
protected: protected:
ApplicationManager(QObject *parent = nullptr); ApplicationManager(QObject *parent = nullptr);