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 };