mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-05-30 22:01:41 +00:00

1. taskmanager used to identify which entry should map to window in x11 environmrnt, listen to xevent in anohter thread, and handle those event when window create, destory, changed. use some way to identify which entry(desktopfile) should mapped to changed window. in wayland, connected plsamawindow signal(window created destoried. 2. use taskmanager instead of dbus in old dock code log: as title
69 lines
2.3 KiB
C++
69 lines
2.3 KiB
C++
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
|
|
//
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
#ifndef WINDOWINFOBASE_H
|
|
#define WINDOWINFOBASE_H
|
|
|
|
#include "processinfo.h"
|
|
#include "xcbutils.h"
|
|
|
|
#include <QString>
|
|
#include <QVector>
|
|
#include <qobject.h>
|
|
#include <qobjectdefs.h>
|
|
#include <qscopedpointer.h>
|
|
|
|
class Entry;
|
|
class AppInfo;
|
|
|
|
class WindowInfoBase : public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
WindowInfoBase(QObject *parent = nullptr) : QObject(parent), entry(nullptr), app(nullptr), m_processInfo(nullptr) {}
|
|
virtual ~WindowInfoBase() {};
|
|
|
|
virtual bool shouldSkip() = 0;
|
|
virtual QString getIcon() = 0;
|
|
virtual QString getTitle() = 0;
|
|
virtual bool isDemandingAttention() = 0;
|
|
virtual void close(uint32_t timestamp) = 0;
|
|
virtual void activate() = 0;
|
|
virtual void minimize() = 0;
|
|
virtual bool isMinimized() = 0;
|
|
virtual int64_t getCreatedTime() = 0;
|
|
virtual QString getWindowType() = 0;
|
|
virtual QString getDisplayName() = 0;
|
|
virtual bool allowClose() = 0;
|
|
virtual void update() = 0;
|
|
virtual void killClient() = 0;
|
|
virtual QString uuid() = 0;
|
|
virtual QString getInnerId() { return innerId; }
|
|
|
|
XWindow getXid() {return xid;}
|
|
void setEntry(Entry *value) { entry = value; }
|
|
Entry *getEntry() { return entry; }
|
|
QString getEntryInnerId() { return entryInnerId; }
|
|
void setEntryInnerId(QString value) { entryInnerId = value; }
|
|
AppInfo *getAppInfo() { return app; }
|
|
void setAppInfo(AppInfo *value) { app = value; }
|
|
int getPid() { return pid; }
|
|
ProcessInfo *getProcess() { return m_processInfo.data(); }
|
|
bool containAtom(QVector<XCBAtom> supports, XCBAtom ty) {return supports.indexOf(ty) != -1;}
|
|
|
|
protected:
|
|
XWindow xid; // 窗口id
|
|
QString title; // 窗口标题
|
|
QString icon; // 窗口图标
|
|
int pid; // 窗口所属应用进程
|
|
QString entryInnerId; // 窗口所属应用对应的innerId
|
|
QString innerId; // 窗口对应的innerId
|
|
Entry *entry; // 窗口所属应用
|
|
AppInfo *app; // 窗口所属应用对应的desktopFile信息
|
|
int64_t m_createdTime; // 创建时间
|
|
QScopedPointer<ProcessInfo> m_processInfo; // 窗口所属应用的进程信息
|
|
};
|
|
|
|
#endif // WINDOWINFOBASE_H
|