KWin
Loading...
Searching...
No Matches
utils.cpp
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2019 Valerio Pilo <vpilo@coldshock.net>
3
4 SPDX-License-Identifier: LGPL-2.0-only
5*/
6
7#include "utils.h"
8
9#include <KConfigGroup>
10#include <KLocalizedString>
11
12namespace
13{
14const QMap<QString, KDecoration2::BorderSize> s_borderSizes{
15 {QStringLiteral("None"), KDecoration2::BorderSize::None},
16 {QStringLiteral("NoSides"), KDecoration2::BorderSize::NoSides},
17 {QStringLiteral("Tiny"), KDecoration2::BorderSize::Tiny},
18 {QStringLiteral("Normal"), KDecoration2::BorderSize::Normal},
19 {QStringLiteral("Large"), KDecoration2::BorderSize::Large},
20 {QStringLiteral("VeryLarge"), KDecoration2::BorderSize::VeryLarge},
21 {QStringLiteral("Huge"), KDecoration2::BorderSize::Huge},
22 {QStringLiteral("VeryHuge"), KDecoration2::BorderSize::VeryHuge},
23 {QStringLiteral("Oversized"), KDecoration2::BorderSize::Oversized}};
24const QMap<KDecoration2::BorderSize, QString> s_borderSizeNames{
25 {KDecoration2::BorderSize::None, i18n("No Window Borders")},
26 {KDecoration2::BorderSize::NoSides, i18n("No Side Window Borders")},
27 {KDecoration2::BorderSize::Tiny, i18n("Tiny Window Borders")},
28 {KDecoration2::BorderSize::Normal, i18n("Normal Window Borders")},
29 {KDecoration2::BorderSize::Large, i18n("Large Window Borders")},
30 {KDecoration2::BorderSize::VeryLarge, i18n("Very Large Window Borders")},
31 {KDecoration2::BorderSize::Huge, i18n("Huge Window Borders")},
32 {KDecoration2::BorderSize::VeryHuge, i18n("Very Huge Window Borders")},
33 {KDecoration2::BorderSize::Oversized, i18n("Oversized Window Borders")}};
34
35const QHash<KDecoration2::DecorationButtonType, QChar> s_buttonNames{
36 {KDecoration2::DecorationButtonType::Menu, QChar('M')},
37 {KDecoration2::DecorationButtonType::ApplicationMenu, QChar('N')},
38 {KDecoration2::DecorationButtonType::OnAllDesktops, QChar('S')},
39 {KDecoration2::DecorationButtonType::ContextHelp, QChar('H')},
40 {KDecoration2::DecorationButtonType::Minimize, QChar('I')},
41 {KDecoration2::DecorationButtonType::Maximize, QChar('A')},
42 {KDecoration2::DecorationButtonType::Close, QChar('X')},
43 {KDecoration2::DecorationButtonType::KeepAbove, QChar('F')},
44 {KDecoration2::DecorationButtonType::KeepBelow, QChar('B')},
45 {KDecoration2::DecorationButtonType::Shade, QChar('L')},
46 {KDecoration2::DecorationButtonType::Spacer, QChar('_')},
47};
48}
49
50namespace Utils
51{
52
54{
55 auto buttonToString = [](KDecoration2::DecorationButtonType button) -> QChar {
56 const auto it = s_buttonNames.constFind(button);
57 if (it != s_buttonNames.constEnd()) {
58 return it.value();
59 }
60 return QChar();
61 };
62 QString ret;
63 for (auto button : buttons) {
64 ret.append(buttonToString(button));
65 }
66 return ret;
67}
68
70{
72 for (auto it = buttons.begin(); it != buttons.end(); ++it) {
73 for (auto it2 = s_buttonNames.constBegin(); it2 != s_buttonNames.constEnd(); ++it2) {
74 if (it2.value() == (*it)) {
75 ret << it2.key();
76 }
77 }
78 }
79 return ret;
80}
81
82DecorationButtonsList readDecorationButtons(const KConfigGroup &config, const QString &key, const DecorationButtonsList &defaultValue)
83{
84 return buttonsFromString(config.readEntry(key, buttonsToString(defaultValue)));
85}
86
87KDecoration2::BorderSize stringToBorderSize(const QString &name)
88{
89 auto it = s_borderSizes.constFind(name);
90 if (it == s_borderSizes.constEnd()) {
91 // non sense values are interpreted just like normal
92 return KDecoration2::BorderSize::Normal;
93 }
94 return it.value();
95}
96
97QString borderSizeToString(KDecoration2::BorderSize size)
98{
99 return s_borderSizes.key(size);
100}
101
102const QMap<KDecoration2::BorderSize, QString> &getBorderSizeNames()
103{
104 return s_borderSizeNames;
105}
106
107} // namespace Utils
DecorationButtonsList buttonsFromString(const QString &buttons)
Definition utils.cpp:69
const QMap< KDecoration2::BorderSize, QString > & getBorderSizeNames()
Definition utils.cpp:102
QString borderSizeToString(KDecoration2::BorderSize size)
Definition utils.cpp:97
KDecoration2::BorderSize stringToBorderSize(const QString &name)
Definition utils.cpp:87
QString buttonsToString(const DecorationButtonsList &buttons)
Definition utils.cpp:53
DecorationButtonsList readDecorationButtons(const KConfigGroup &config, const QString &key, const DecorationButtonsList &defaultValue)
Definition utils.cpp:82
QList< KDecoration2::DecorationButtonType > DecorationButtonsList
Definition utils.h:14