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
51 lines
1.0 KiB
C++
51 lines
1.0 KiB
C++
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
|
|
//
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
#ifndef WINDOWPATTERNS_H
|
|
#define WINDOWPATTERNS_H
|
|
|
|
#include "windowinfox.h"
|
|
|
|
#include <QString>
|
|
#include <QVector>
|
|
|
|
|
|
struct RuleValueParse {
|
|
RuleValueParse();
|
|
bool match(const WindowInfoX *winInfo);
|
|
static QString parseRuleKey(WindowInfoX *winInfo, const QString &ruleKey);
|
|
QString key;
|
|
bool negative;
|
|
bool (*fn)(QString, QString);
|
|
uint8_t type;
|
|
uint flags;
|
|
QString original;
|
|
QString value;
|
|
};
|
|
|
|
class WindowPatterns
|
|
{
|
|
// 窗口类型匹配
|
|
struct WindowPattern {
|
|
QVector<QVector<QString>> rules; // rules
|
|
QString result; // ret
|
|
QVector<RuleValueParse> parseRules;
|
|
};
|
|
|
|
public:
|
|
WindowPatterns();
|
|
|
|
QString match(WindowInfoX *winInfo);
|
|
|
|
private:
|
|
void loadWindowPatterns();
|
|
RuleValueParse parseRule(QVector<QString> rule);
|
|
|
|
private:
|
|
QVector<WindowPattern> m_patterns;
|
|
|
|
};
|
|
|
|
#endif // WINDOWPATTERNS_H
|