feat(task-manager):适配wlcom下highlight window接口

This commit is contained in:
iaom 2024-06-12 10:18:04 +08:00
parent 91b72105df
commit 89f604bbf1
9 changed files with 47 additions and 8 deletions

View File

@ -19,3 +19,17 @@
*/
#include "abstract-window-manager.h"
#include <QDBusConnection>
#include <QDBusMessage>
#include <QDBusPendingCall>
static const QString HIGHLIGHT_WINDOW_SERVICE = QStringLiteral("org.kde.KWin.HighlightWindow");
static const QString HIGHLIGHT_WINDOW_PATH = QStringLiteral("/org/kde/KWin/HighlightWindow");
static const QString &HIGHLIGHT_WINDOW_INTERFACE = HIGHLIGHT_WINDOW_SERVICE;
void AbstractWindowManager::activateWindowView(const QStringList &wids)
{
auto message = QDBusMessage::createMethodCall(HIGHLIGHT_WINDOW_SERVICE, HIGHLIGHT_WINDOW_PATH, HIGHLIGHT_WINDOW_INTERFACE, QStringLiteral("highlightWindows"));
message << wids;
QDBusConnection::sessionBus().asyncCall(message);
}

View File

@ -62,6 +62,8 @@ public:
virtual void setMinimizedGeometry(const QString& wid, QQuickItem *item) = 0;
virtual void unsetMinimizedGeometry(const QString& wid, QQuickItem *item) = 0;
virtual void activateWindowView(const QStringList &wids);
Q_SIGNALS:
void currentDesktopChanged();

View File

@ -103,7 +103,7 @@ TaskManager {
Items.Dialog {
id: thumbnailView
mainItem: viewContent
type: Platform.WindowType.SystemWindow
type: Platform.WindowType.AppletPopup
flags: Qt.WindowDoesNotAcceptFocus | Qt.FramelessWindowHint
function updatePosition() {

View File

@ -253,7 +253,7 @@ MouseArea {
activeTimer.start();
} else {
activeTimer.stop();
UkuiTaskManager.TaskManager.activateWindowView("");
UkuiTaskManager.TaskManager.activateWindowView([]);
}
}

View File

@ -43,9 +43,7 @@
static const QString QUICK_LAUNCHERS_KEY("quickLaunchers");
static const QString HIGHLIGHT_WINDOW_SERVICE = QStringLiteral("org.kde.KWin.HighlightWindow");
static const QString HIGHLIGHT_WINDOW_PATH = QStringLiteral("/org/kde/KWin/HighlightWindow");
static const QString &HIGHLIGHT_WINDOW_INTERFACE = HIGHLIGHT_WINDOW_SERVICE;
static const QString NOTIFICATION_SERVICE = QStringLiteral("org.freedesktop.Notifications");
static const QString NOTIFICATION_PATH = QStringLiteral("/org/freedesktop/Notifications");
static const QString NOTIFICATION_INTERFACE = QStringLiteral("org.ukui.NotificationServer");
@ -570,9 +568,7 @@ void UkuiTaskManager::setOrder(const QModelIndex &index, int order)
void UkuiTaskManager::activateWindowView(const QStringList &winIds)
{
auto message = QDBusMessage::createMethodCall(HIGHLIGHT_WINDOW_SERVICE, HIGHLIGHT_WINDOW_PATH, HIGHLIGHT_WINDOW_INTERFACE, QStringLiteral("highlightWindows"));
message << winIds;
QDBusConnection::sessionBus().asyncCall(message);
WindowManager::self()->activateWindowView(winIds);
}
void UkuiTaskManager::activateWindow(const QString &winId)

View File

@ -315,3 +315,22 @@ void WaylandWindowManager::unsetMinimizedGeometry(const QString &wid, QQuickItem
delete s;
}
void WaylandWindowManager::activateWindowView(const QStringList &wids)
{
if(qgetenv("XDG_SESSION_DESKTOP") == "kylin-wlcom" || qgetenv("DESKTOP_SESSION") == "kylin-wlcom") {
if(wids.isEmpty()) {
for(auto window : m_windows) {
if(window->isHighlight()) {
window->unsetHightlight();
}
}
} else {
//wlcom只能高亮1个窗口
if(m_uuidToWindow.contains(wids.first().toUtf8())) {
return m_uuidToWindow.value(wids.first().toUtf8())->setHighlight();
}
}
}
AbstractWindowManager::activateWindowView(wids);
}

View File

@ -68,6 +68,8 @@ public:
void setMinimizedGeometry(const QString& wid, QQuickItem *item) override;
void unsetMinimizedGeometry(const QString& wid, QQuickItem *item) override;
void activateWindowView(const QStringList &wids) override;
private:
void addWindow(UkuiWindow *window);
void desktopCreated(const QString &id, quint32 position);

View File

@ -197,3 +197,8 @@ void WindowManager::setMinimizedGeometry(const QStringList &widList, QQuickItem
WindowManagerPrivate::interface()->setMinimizedGeometry(wid, item);
}
}
void WindowManager::activateWindowView(const QStringList &wids)
{
WindowManagerPrivate::interface()->activateWindowView(wids);
}

View File

@ -62,6 +62,7 @@ public:
Q_INVOKABLE void setMinimizedGeometry(const QString& wid, QQuickItem *item);
Q_INVOKABLE void setMinimizedGeometry(const QStringList& winds, QQuickItem *item);
Q_INVOKABLE void unsetMinimizedGeometry(const QString& wid, QQuickItem *item);
Q_INVOKABLE void activateWindowView(const QStringList &wids);
Q_SIGNALS:
void currentDesktopChanged();