KWin
Loading...
Searching...
No Matches
previewsettings.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
5*/
6#pragma once
7
8#include <KDecoration2/DecorationSettings>
9#include <KDecoration2/Private/DecorationSettingsPrivate>
10#include <QAbstractListModel>
11#include <QObject>
12#include <QPointer>
13
14namespace KDecoration2
15{
16
17namespace Preview
18{
19class ButtonsModel;
20class PreviewBridge;
21
22class BorderSizesModel : public QAbstractListModel
23{
24 Q_OBJECT
25public:
26 explicit BorderSizesModel(QObject *parent = nullptr);
28 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
29 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
30 QHash<int, QByteArray> roleNames() const override;
31
32private:
33 QList<BorderSize> m_borders = QList<BorderSize>({BorderSize::None,
34 BorderSize::NoSides,
35 BorderSize::Tiny,
36 BorderSize::Normal,
37 BorderSize::Large,
38 BorderSize::VeryLarge,
39 BorderSize::Huge,
40 BorderSize::VeryHuge,
41 BorderSize::Oversized});
42};
43
44class PreviewSettings : public QObject, public DecorationSettingsPrivate
45{
46 Q_OBJECT
50 Q_PROPERTY(QAbstractItemModel *leftButtonsModel READ leftButtonsModel CONSTANT)
51 Q_PROPERTY(QAbstractItemModel *rightButtonsModel READ rightButtonsModel CONSTANT)
52 Q_PROPERTY(QAbstractItemModel *availableButtonsModel READ availableButtonsModel CONSTANT)
53 Q_PROPERTY(QAbstractItemModel *borderSizesModel READ borderSizesModel CONSTANT)
55 Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged)
56public:
57 explicit PreviewSettings(DecorationSettings *parent);
58 ~PreviewSettings() override;
59 bool isAlphaChannelSupported() const override;
60 bool isOnAllDesktopsAvailable() const override;
61 bool isCloseOnDoubleClickOnMenu() const override
62 {
63 return m_closeOnDoubleClick;
64 }
65 BorderSize borderSize() const override;
66
67 void setOnAllDesktopsAvailable(bool available);
68 void setAlphaChannelSupported(bool supported);
69 void setCloseOnDoubleClickOnMenu(bool enabled);
70
71 QAbstractItemModel *leftButtonsModel() const;
72 QAbstractItemModel *rightButtonsModel() const;
73 QAbstractItemModel *availableButtonsModel() const;
74 QAbstractItemModel *borderSizesModel() const
75 {
76 return m_borderSizes;
77 }
78
79 QList<DecorationButtonType> decorationButtonsLeft() const override;
80 QList<DecorationButtonType> decorationButtonsRight() const override;
81
82 Q_INVOKABLE void addButtonToLeft(int row);
83 Q_INVOKABLE void addButtonToRight(int row);
84
85 int borderSizesIndex() const
86 {
87 return m_borderSize;
88 }
89 void setBorderSizesIndex(int index);
90
91 QFont font() const override
92 {
93 return m_font;
94 }
95 void setFont(const QFont &font);
96
97Q_SIGNALS:
102 void fontChanged(const QFont &);
103
104private:
105 bool m_alphaChannelSupported;
106 bool m_onAllDesktopsAvailable;
107 bool m_closeOnDoubleClick;
108 ButtonsModel *m_leftButtons;
109 ButtonsModel *m_rightButtons;
110 ButtonsModel *m_availableButtons;
111 BorderSizesModel *m_borderSizes;
112 int m_borderSize;
113 QFont m_font;
114};
115
116class Settings : public QObject
117{
118 Q_OBJECT
120 Q_PROPERTY(KDecoration2::DecorationSettings *settings READ settingsPointer NOTIFY settingsChanged)
122public:
123 explicit Settings(QObject *parent = nullptr);
124 ~Settings() override;
125
126 PreviewBridge *bridge() const;
128
129 std::shared_ptr<DecorationSettings> settings() const;
130 DecorationSettings *settingsPointer() const;
132 {
133 return m_borderSize;
134 }
135 void setBorderSizesIndex(int index);
136
137Q_SIGNALS:
141
142private:
143 void createSettings();
144 QPointer<PreviewBridge> m_bridge;
145 std::shared_ptr<KDecoration2::DecorationSettings> m_settings;
146 PreviewSettings *m_previewSettings = nullptr;
147 int m_borderSize = 3;
148};
149
150}
151}
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
QHash< int, QByteArray > roleNames() const override
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Q_INVOKABLE void addButtonToRight(int row)
QList< DecorationButtonType > decorationButtonsRight() const override
bool isCloseOnDoubleClickOnMenu() const override
BorderSize borderSize() const override
Q_INVOKABLE void addButtonToLeft(int row)
QList< DecorationButtonType > decorationButtonsLeft() const override
QAbstractItemModel * borderSizesModel() const
KDecoration2::Preview::PreviewBridge * bridge
void setBridge(PreviewBridge *bridge)
KDecoration2::DecorationSettings * settings
DecorationSettings * settingsPointer() const
#define explicit