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"