File indexing completed on 2024-04-28 16:54:59

0001 /*
0002     SPDX-FileCopyrightText: 2013 Marco Martin <mart@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <Plasma/Theme>
0010 #include <PlasmaQuick/ConfigView>
0011 
0012 #include "panelview.h"
0013 
0014 #include <QJSValue>
0015 #include <QPointer>
0016 #include <QQmlListProperty>
0017 #include <QQuickItem>
0018 #include <QQuickView>
0019 #include <QStandardItemModel>
0020 
0021 class PanelView;
0022 
0023 namespace Plasma
0024 {
0025 class Containment;
0026 }
0027 
0028 namespace KWayland
0029 {
0030 namespace Client
0031 {
0032 class PlasmaShellSurface;
0033 }
0034 }
0035 
0036 class PanelConfigView : public PlasmaQuick::ConfigView
0037 {
0038     Q_OBJECT
0039     Q_PROPERTY(PanelView::VisibilityMode visibilityMode READ visibilityMode WRITE setVisibilityMode NOTIFY visibilityModeChanged)
0040     Q_PROPERTY(PanelView::OpacityMode opacityMode READ opacityMode WRITE setOpacityMode NOTIFY opacityModeChanged)
0041     Q_PROPERTY(Plasma::FrameSvg::EnabledBorders enabledBorders READ enabledBorders NOTIFY enabledBordersChanged)
0042 
0043 public:
0044     PanelConfigView(Plasma::Containment *interface, PanelView *panelView, QWindow *parent = nullptr);
0045     ~PanelConfigView() override;
0046 
0047     void init() override;
0048 
0049     PanelView::VisibilityMode visibilityMode() const;
0050     void setVisibilityMode(PanelView::VisibilityMode mode);
0051 
0052     PanelView::OpacityMode opacityMode() const;
0053     void setOpacityMode(PanelView::OpacityMode mode);
0054 
0055     Plasma::FrameSvg::EnabledBorders enabledBorders() const;
0056 
0057 protected:
0058     void showEvent(QShowEvent *ev) override;
0059     void hideEvent(QHideEvent *ev) override;
0060     void focusOutEvent(QFocusEvent *ev) override;
0061     void moveEvent(QMoveEvent *ev) override;
0062     bool event(QEvent *e) override;
0063 
0064 public Q_SLOTS:
0065     void showAddWidgetDialog();
0066     void addPanelSpacer();
0067 
0068 protected Q_SLOTS:
0069     void syncGeometry();
0070     void syncLocation();
0071 
0072 private Q_SLOTS:
0073     void updateBlurBehindAndContrast();
0074 
0075 Q_SIGNALS:
0076     void visibilityModeChanged();
0077     void opacityModeChanged();
0078     void enabledBordersChanged();
0079 
0080 private:
0081     Plasma::Containment *m_containment;
0082     QPointer<PanelView> m_panelView;
0083     Plasma::FrameSvg::EnabledBorders m_enabledBorders = Plasma::FrameSvg::AllBorders;
0084     Plasma::Theme m_theme;
0085     QTimer m_screenSyncTimer;
0086     QPointer<KWayland::Client::PlasmaShellSurface> m_shellSurface;
0087 };