File indexing completed on 2024-05-05 05:29:54
0001 /* 0002 * SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 #include "decorationsettings.h" 0007 #include "private/decorationbridge.h" 0008 #include "private/decorationsettingsprivate.h" 0009 0010 #include <QFontMetrics> 0011 0012 namespace KDecoration2 0013 { 0014 DecorationSettings::DecorationSettings(DecorationBridge *bridge, QObject *parent) 0015 : QObject(parent) 0016 , d(bridge->settings(this)) 0017 { 0018 auto updateUnits = [this] { 0019 int gridUnit = QFontMetrics(font()).boundingRect(QLatin1Char('M')).height(); 0020 ; 0021 if (gridUnit % 2 != 0) { 0022 gridUnit++; 0023 } 0024 if (gridUnit != d->gridUnit()) { 0025 d->setGridUnit(gridUnit); 0026 Q_EMIT gridUnitChanged(gridUnit); 0027 } 0028 if (gridUnit != d->largeSpacing()) { 0029 d->setSmallSpacing(qMax(2, (int)(gridUnit / 4))); // 1/4 of gridUnit, at least 2 0030 d->setLargeSpacing(gridUnit); // msize.height 0031 Q_EMIT spacingChanged(); 0032 } 0033 }; 0034 updateUnits(); 0035 connect(this, &DecorationSettings::fontChanged, this, updateUnits); 0036 } 0037 0038 DecorationSettings::~DecorationSettings() = default; 0039 0040 bool DecorationSettings::isOnAllDesktopsAvailable() const 0041 { 0042 return d->isOnAllDesktopsAvailable(); 0043 } 0044 0045 bool DecorationSettings::isAlphaChannelSupported() const 0046 { 0047 return d->isAlphaChannelSupported(); 0048 } 0049 0050 bool DecorationSettings::isCloseOnDoubleClickOnMenu() const 0051 { 0052 return d->isCloseOnDoubleClickOnMenu(); 0053 } 0054 0055 QList<DecorationButtonType> DecorationSettings::decorationButtonsLeft() const 0056 { 0057 return d->decorationButtonsLeft(); 0058 } 0059 0060 QList<DecorationButtonType> DecorationSettings::decorationButtonsRight() const 0061 { 0062 return d->decorationButtonsRight(); 0063 } 0064 0065 BorderSize DecorationSettings::borderSize() const 0066 { 0067 return d->borderSize(); 0068 } 0069 0070 QFont DecorationSettings::font() const 0071 { 0072 return d->font(); 0073 } 0074 0075 QFontMetricsF DecorationSettings::fontMetrics() const 0076 { 0077 return d->fontMetrics(); 0078 } 0079 0080 int DecorationSettings::gridUnit() const 0081 { 0082 return d->gridUnit(); 0083 } 0084 0085 int DecorationSettings::smallSpacing() const 0086 { 0087 return d->smallSpacing(); 0088 } 0089 0090 int DecorationSettings::largeSpacing() const 0091 { 0092 return d->largeSpacing(); 0093 } 0094 } 0095 0096 #include "moc_decorationsettings.cpp"