File indexing completed on 2024-12-08 04:58:23
0001 /* 0002 SPDX-FileCopyrightText: 2020 Michail Vourlakos <mvourlakos@gmail.com> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #ifndef SUBCONFIGVIEW_H 0007 #define SUBCONFIGVIEW_H 0008 0009 // local 0010 #include <coretypes.h> 0011 #include "../../wm/windowinfowrap.h" 0012 0013 //Qt 0014 #include <QObject> 0015 #include <QPointer> 0016 #include <QQuickView> 0017 #include <QTimer> 0018 0019 // Plasma 0020 #include <Plasma/FrameSvg> 0021 0022 namespace KWayland { 0023 namespace Client { 0024 class PlasmaShellSurface; 0025 } 0026 } 0027 0028 namespace Latte { 0029 class Corona; 0030 class View; 0031 } 0032 0033 0034 namespace Latte { 0035 namespace ViewPart { 0036 0037 class SubConfigView : public QQuickView 0038 { 0039 Q_OBJECT 0040 Q_PROPERTY(Plasma::FrameSvg::EnabledBorders enabledBorders READ enabledBorders NOTIFY enabledBordersChanged) 0041 0042 public: 0043 SubConfigView(Latte::View *view, const QString &title, const bool &isNormalWindow = true); 0044 ~SubConfigView() override; 0045 0046 virtual void requestActivate(); 0047 0048 QString validTitle() const; 0049 0050 Plasma::FrameSvg::EnabledBorders enabledBorders() const; 0051 0052 Latte::Corona *corona() const; 0053 Latte::View *parentView() const; 0054 virtual void setParentView(Latte::View *view, const bool &immediate = false); 0055 virtual void showAfter(int msecs = 0); 0056 0057 Latte::WindowSystem::WindowId trackedWindowId(); 0058 KWayland::Client::PlasmaShellSurface *surface(); 0059 0060 public slots: 0061 virtual void syncGeometry() = 0; 0062 0063 signals: 0064 void enabledBordersChanged(); 0065 0066 protected: 0067 virtual void syncSlideEffect(); 0068 0069 virtual void init(); 0070 virtual void initParentView(Latte::View *view); 0071 virtual void updateEnabledBorders() = 0; 0072 0073 void showEvent(QShowEvent *ev) override; 0074 bool event(QEvent *e) override; 0075 0076 virtual Qt::WindowFlags wFlags() const; 0077 0078 protected: 0079 bool m_isNormalWindow{true}; 0080 QTimer m_screenSyncTimer; 0081 0082 QPointer<Latte::View> m_latteView; 0083 0084 QList<QMetaObject::Connection> connections; 0085 QList<QMetaObject::Connection> viewconnections; 0086 0087 Plasma::FrameSvg::EnabledBorders m_enabledBorders{Plasma::FrameSvg::AllBorders}; 0088 0089 Latte::Corona *m_corona{nullptr}; 0090 KWayland::Client::PlasmaShellSurface *m_shellSurface{nullptr}; 0091 0092 private slots: 0093 void updateWaylandId(); 0094 0095 private: 0096 void setupWaylandIntegration(); 0097 0098 private: 0099 QString m_validTitle; 0100 0101 QTimer m_showTimer; 0102 0103 Latte::WindowSystem::WindowId m_waylandWindowId; 0104 }; 0105 0106 } 0107 } 0108 #endif //SUBCONFIGVIEW_H 0109