KWin
Loading...
Searching...
No Matches
rulesmodel.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2020 Ismael Asensio <isma.af@gmail.com>
3
4 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
5*/
6
7#pragma once
8
9#include "ruleitem.h"
10#include <rules.h>
11#include <rulesettings.h>
13
14#include <QAbstractListModel>
15#include <QObject>
16#include <QSortFilterProxyModel>
17
18#if KWIN_BUILD_ACTIVITIES
19#include <PlasmaActivities/Consumer>
20#endif
21
22namespace KWin
23{
24
25class RulesModel : public QAbstractListModel
26{
27 Q_OBJECT
28
29 Q_PROPERTY(QString description READ description WRITE setDescription NOTIFY descriptionChanged)
30 Q_PROPERTY(QStringList warningMessages READ warningMessages NOTIFY warningMessagesChanged)
31
32public:
49 Q_ENUM(RulesRole)
50
51public:
52 explicit RulesModel(QObject *parent = nullptr);
54
55 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
56 QHash<int, QByteArray> roleNames() const override;
57 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
58 bool setData(const QModelIndex &index, const QVariant &value, int role) override;
59
60 QModelIndex indexOf(const QString &key) const;
61 bool hasRule(const QString &key) const;
62 RuleItem *ruleItem(const QString &key) const;
63
64 RuleSettings *settings() const;
65 void setSettings(RuleSettings *settings);
66
67 void setSuggestedProperties(const QVariantMap &info);
68
69 QString description() const;
70 void setDescription(const QString &description);
71 QStringList warningMessages() const;
72
73 Q_INVOKABLE void detectWindowProperties(int miliseconds);
74
75Q_SIGNALS:
78
80 void showErrorMessage(const QString &title, const QString &message);
81
83
84private:
85 void populateRuleList();
86 RuleItem *addRule(RuleItem *rule);
87 void writeToSettings(RuleItem *rule);
88
89 QString defaultDescription() const;
90 void processSuggestion(const QString &key, const QVariant &value);
91
92 bool wmclassWarning() const;
93 bool geometryWarning() const;
94 bool opacityWarning() const;
95
96 static const QHash<QString, QString> x11PropertyHash();
97 void updateVirtualDesktops();
98
99 QList<OptionsModel::Data> windowTypesModelData() const;
100 QList<OptionsModel::Data> virtualDesktopsModelData() const;
101 QList<OptionsModel::Data> activitiesModelData() const;
102 QList<OptionsModel::Data> placementModelData() const;
103 QList<OptionsModel::Data> focusModelData() const;
104 QList<OptionsModel::Data> colorSchemesModelData() const;
105 QList<OptionsModel::Data> layerModelData() const;
106
107private Q_SLOTS:
108 void selectX11Window();
109
110private:
111 QList<RuleItem *> m_ruleList;
112 QHash<QString, RuleItem *> m_rules;
113 DBusDesktopDataVector m_virtualDesktops;
114#if KWIN_BUILD_ACTIVITIES
115 KActivities::Consumer *m_activities;
116#endif
117 RuleSettings *m_settings;
118};
119
120}
QString description
Definition rulesmodel.h:29
void showErrorMessage(const QString &title, const QString &message)
RulesModel(QObject *parent=nullptr)
RuleSettings * settings() const
void setDescription(const QString &description)
void descriptionChanged()
QHash< int, QByteArray > roleNames() const override
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
bool setData(const QModelIndex &index, const QVariant &value, int role) override
bool hasRule(const QString &key) const
void virtualDesktopsUpdated()
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Q_INVOKABLE void detectWindowProperties(int miliseconds)
QStringList warningMessages
Definition rulesmodel.h:30
void setSuggestedProperties(const QVariantMap &info)
RuleItem * ruleItem(const QString &key) const
void warningMessagesChanged()
void showSuggestions()
QModelIndex indexOf(const QString &key) const
void setSettings(RuleSettings *settings)
QList< DBusDesktopDataStruct > DBusDesktopDataVector