File indexing completed on 2024-05-12 16:59:29

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 #pragma once
0007 
0008 #include "../decorationdefines.h"
0009 #include <QFont>
0010 #include <QFontMetricsF>
0011 #include <QVector>
0012 #include <kdecoration2/private/kdecoration2_private_export.h>
0013 
0014 //
0015 //  W A R N I N G
0016 //  -------------
0017 //
0018 // This file is not part of the KDecoration2 API.  It exists purely as an
0019 // implementation detail.  This header file may change from version to
0020 // version without notice, or even be removed.
0021 //
0022 // We mean it.
0023 //
0024 
0025 namespace KDecoration2
0026 {
0027 class DecorationSettings;
0028 
0029 class KDECORATIONS_PRIVATE_EXPORT DecorationSettingsPrivate
0030 {
0031 public:
0032     virtual ~DecorationSettingsPrivate();
0033     virtual bool isOnAllDesktopsAvailable() const = 0;
0034     virtual bool isAlphaChannelSupported() const = 0;
0035     virtual bool isCloseOnDoubleClickOnMenu() const = 0;
0036     virtual QVector<DecorationButtonType> decorationButtonsLeft() const = 0;
0037     virtual QVector<DecorationButtonType> decorationButtonsRight() const = 0;
0038     virtual BorderSize borderSize() const = 0;
0039     virtual QFont font() const;
0040     virtual QFontMetricsF fontMetrics() const;
0041 
0042     DecorationSettings *decorationSettings();
0043     const DecorationSettings *decorationSettings() const;
0044 
0045     int gridUnit() const;
0046     int smallSpacing() const;
0047     int largeSpacing() const;
0048     void setGridUnit(int unit);
0049     void setLargeSpacing(int spacing);
0050     void setSmallSpacing(int spacing);
0051 
0052 protected:
0053     explicit DecorationSettingsPrivate(DecorationSettings *parent);
0054 
0055 private:
0056     class Private;
0057     const QScopedPointer<Private> d;
0058 };
0059 }